'sysctl_max_map_count' should be non-negative
authorAmerigo Wang <[email protected]>
Tue, 15 Dec 2009 01:59:52 +0000 (17:59 -0800)
committerLinus Torvalds <[email protected]>
Tue, 15 Dec 2009 16:53:23 +0000 (08:53 -0800)
Jan Engelhardt reported we have this problem:

setting max_map_count to a value large enough results in programs dying at
first try.  This is on 2.6.31.6:

15:59 borg:/proc/sys/vm # echo $[1<<31-1] >max_map_count
15:59 borg:/proc/sys/vm # cat max_map_count
1073741824
15:59 borg:/proc/sys/vm # echo $[1<<31] >max_map_count
15:59 borg:/proc/sys/vm # cat max_map_count
Killed

This is because we have a chance to make 'max_map_count' negative.  but
it's meaningless.  Make it only accept non-negative values.

Reported-by: Jan Engelhardt <[email protected]>
Signed-off-by: WANG Cong <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: James Morris <[email protected]>
Cc: Alexey Dobriyan <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
kernel/sysctl.c

index 60fc931310957c8ee00c6b1087d6039c6998a3a9..45e4bef0012a6747d6608cbb78ba0f700a29d7cb 100644 (file)
@@ -1131,7 +1131,8 @@ static struct ctl_table vm_table[] = {
                .data           = &sysctl_max_map_count,
                .maxlen         = sizeof(sysctl_max_map_count),
                .mode           = 0644,
-               .proc_handler   = proc_dointvec
+               .proc_handler   = proc_dointvec,
+               .extra1         = &zero,
        },
 #else
        {