Skip to content
This repository was archived by the owner on Mar 7, 2021. It is now read-only.

Commit 79bb4e7

Browse files
committed
Sigh, fix
1 parent 4288c25 commit 79bb4e7

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/sysctl.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ unsafe extern "C" fn proc_handler<T: SysctlStorage>(
6868
len: *mut usize,
6969
ppos: *mut bindings::loff_t,
7070
) -> c_types::c_int {
71+
if *ppos != 0 && write == 0 {
72+
*len = 0;
73+
return 0;
74+
}
75+
7176
let data = match UserSlicePtr::new(buffer, *len) {
7277
Ok(ptr) => ptr,
7378
Err(e) => return e.to_kernel_errno(),
@@ -83,8 +88,8 @@ unsafe extern "C" fn proc_handler<T: SysctlStorage>(
8388
let mut writer = data.writer();
8489
storage.read_value(&mut writer)
8590
};
86-
*len -= bytes_processed;
87-
*ppos += bytes_processed as bindings::loff_t;
91+
*len = bytes_processed;
92+
*ppos += *len as bindings::loff_t;
8893
match result {
8994
Ok(()) => 0,
9095
Err(e) => e.to_kernel_errno(),

0 commit comments

Comments
 (0)