@@ -12,7 +12,7 @@ use crate::user_ptr::{UserSlicePtr, UserSlicePtrWriter};
12
12
13
13
pub trait SysctlStorage : Sync {
14
14
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 < ( ) > ;
16
16
}
17
17
18
18
fn trim_whitespace ( mut data : & [ u8 ] ) -> & [ u8 ] {
37
37
( * self ) . store_value ( data)
38
38
}
39
39
40
- fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> ( usize , error:: KernelResult < ( ) > ) {
40
+ fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> error:: KernelResult < ( ) > {
41
41
( * self ) . read_value ( data)
42
42
}
43
43
}
@@ -58,13 +58,13 @@ impl SysctlStorage for atomic::AtomicBool {
58
58
( data. len ( ) , result)
59
59
}
60
60
61
- fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> ( usize , error:: KernelResult < ( ) > ) {
61
+ fn read_value ( & self , data : & mut UserSlicePtrWriter ) -> error:: KernelResult < ( ) > {
62
62
let value = if self . load ( atomic:: Ordering :: Relaxed ) {
63
63
b"1\n "
64
64
} else {
65
65
b"0\n "
66
66
} ;
67
- ( value . len ( ) , data. write ( value) )
67
+ data. write ( value)
68
68
}
69
69
}
70
70
@@ -106,7 +106,9 @@ unsafe extern "C" fn proc_handler<T: SysctlStorage>(
106
106
storage. store_value ( & data)
107
107
} else {
108
108
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)
110
112
} ;
111
113
* len = bytes_processed;
112
114
* ppos += * len as bindings:: loff_t ;
0 commit comments