Commit 27b3d80a7b6adcf069b5e869e4efcc3a79f88a91

Authored by Eric Dumazet
Committed by Linus Torvalds
1 parent aaac7d9e0a

sysctl: fix min/max handling in __do_proc_doulongvec_minmax()

When proc_doulongvec_minmax() is used with an array of longs, and no
min/max check requested (.extra1 or .extra2 being NULL), we dereference a
NULL pointer for the second element of the array.

Noticed while doing some changes in network stack for the "16TB problem"

Fix is to not change min & max pointers in __do_proc_doulongvec_minmax(),
so that all elements of the vector share an unique min/max limit, like
proc_dointvec_minmax().

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Americo Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

... ... @@ -2485,7 +2485,7 @@
2485 2485 kbuf[left] = 0;
2486 2486 }
2487 2487  
2488   - for (; left && vleft--; i++, min++, max++, first=0) {
  2488 + for (; left && vleft--; i++, first = 0) {
2489 2489 unsigned long val;
2490 2490  
2491 2491 if (write) {