timer/sysclt: Restrict timer migration sysctl values to 0 and 1
authorMyungho Jung <mhjungk@gmail.com>
Wed, 19 Apr 2017 22:24:50 +0000 (15:24 -0700)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 20 Apr 2017 12:56:59 +0000 (14:56 +0200)
timer_migration sysctl acts as a boolean switch, so the allowed values
should be restricted to 0 and 1.

Add the necessary extra fields to the sysctl table entry to enforce that.

[ tglx: Rewrote changelog ]

Signed-off-by: Myungho Jung <mhjungk@gmail.com>
Link: http://lkml.kernel.org/r/1492640690-3550-1-git-send-email-mhjungk@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/sysctl.c
kernel/time/timer.c

index acf0a5a06da7c0c47003982e83bb74fcd4ebba5f..08637699a862ae7e93770df55c875b796c59a7b9 100644 (file)
@@ -1176,6 +1176,8 @@ static struct ctl_table kern_table[] = {
                .maxlen         = sizeof(unsigned int),
                .mode           = 0644,
                .proc_handler   = timer_migration_handler,
+               .extra1         = &zero,
+               .extra2         = &one,
        },
 #endif
 #ifdef CONFIG_BPF_SYSCALL
index 1dc0256bfb6e1f00bfafb1c6e085feda9f04cfa3..cc6b6bdd13292243b6324938842d05871a419008 100644 (file)
@@ -241,7 +241,7 @@ int timer_migration_handler(struct ctl_table *table, int write,
        int ret;
 
        mutex_lock(&mutex);
-       ret = proc_dointvec(table, write, buffer, lenp, ppos);
+       ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
        if (!ret && write)
                timers_update_migration(false);
        mutex_unlock(&mutex);