@@ -12,7 +12,7 @@ use crate::user_ptr::{UserSlicePtr, UserSlicePtrWriter};
1212
1313pub trait SysctlStorage : Sync {
1414 fn store_value ( & self , data : & [ u8 ] ) -> ( usize , error:: KernelResult < ( ) > ) ;
15- fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> ( usize , error:: KernelResult < ( ) > ) ;
15+ fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> error:: KernelResult < ( ) > ;
1616}
1717
1818fn trim_whitespace ( mut data : & [ u8 ] ) -> & [ u8 ] {
3737 ( * self ) . store_value ( data)
3838 }
3939
40- fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> ( usize , error:: KernelResult < ( ) > ) {
40+ fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> error:: KernelResult < ( ) > {
4141 ( * self ) . read_value ( data)
4242 }
4343}
@@ -58,13 +58,13 @@ impl SysctlStorage for atomic::AtomicBool {
5858 ( data. len ( ) , result)
5959 }
6060
61- fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> ( usize , error:: KernelResult < ( ) > ) {
61+ fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> error:: KernelResult < ( ) > {
6262 let value = if self . load ( atomic:: Ordering :: Relaxed ) {
6363 b"1\n "
6464 } else {
6565 b"0\n "
6666 } ;
67- ( value . len ( ) , data. write ( value) )
67+ data. write ( value)
6868 }
6969}
7070
@@ -106,7 +106,9 @@ unsafe extern "C" fn proc_handler<T: SysctlStorage>(
106106 storage. store_value ( & data)
107107 } else {
108108 let mut writer = data. writer ( ) ;
109- storage. read_value ( & mut writer)
109+ let starting_len = writer. len ( ) ;
110+ let res = storage. read_value ( & mut writer) ;
111+ ( starting_len - writer. len ( ) , res)
110112 } ;
111113 * len = bytes_processed;
112114 * ppos += * len as bindings:: loff_t ;
0 commit comments