[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAGXu5jKc2q3gnBrJ5JowDvOC_tSR5o9iKuF+JVKMJYWAPOZANQ@mail.gmail.com>
Date: Wed, 10 Apr 2019 11:46:25 -0700
From: Kees Cook <keescook@...omium.org>
To: Matteo Croce <mcroce@...hat.com>
Cc: LKML <linux-kernel@...r.kernel.org>,
"linux-fsdevel@...r.kernel.org" <linux-fsdevel@...r.kernel.org>,
Luis Chamberlain <mcgrof@...nel.org>,
Kees Cook <keescook@...omium.org>,
Alexey Dobriyan <adobriyan@...il.com>
Subject: Re: [PATCH 2/2] kernel: use sysctl shared variables for range check
On Mon, Apr 8, 2019 at 3:09 PM Matteo Croce <mcroce@...hat.com> wrote:
>
> Use the shared variables for range check, instead of declaring a local one
> in every source file.
I was expecting this to be a tree-wide change for all the cases found
by patch 1's "git grep".
Slight change to the grep for higher accuracy:
$ git grep -E '\.extra[12].*&(zero|one|int_max)\b' |wc -l
245
Only 31 sources:
$ git grep -E '\.extra[12].*&(zero|one|int_max)\b' | cut -d: -f1 |
sort -u > /tmp/list.txt
$ wc -l /tmp/list.txt
31
One thing I wonder about is if any of these cases depend on the extra
variable being non-const (many of these are just "static int").
$ egrep -H '\b(zero|one|int_max)\b.*=' $(cat /tmp/list.txt) | grep -v static
Looks like none, so it'd be safe. How about doing this tree-wide for
all 31 cases? (Coccinelle might be able to help.)
-Kees
>
> Signed-off-by: Matteo Croce <mcroce@...hat.com>
> ---
> kernel/pid_namespace.c | 3 +-
> kernel/sysctl.c | 193 ++++++++++++++++++++---------------------
> kernel/ucount.c | 6 +-
> 3 files changed, 98 insertions(+), 104 deletions(-)
>
> diff --git a/kernel/pid_namespace.c b/kernel/pid_namespace.c
> index aa6e72fb7c08..ddbb51bc4968 100644
> --- a/kernel/pid_namespace.c
> +++ b/kernel/pid_namespace.c
> @@ -290,14 +290,13 @@ static int pid_ns_ctl_handler(struct ctl_table *table, int write,
> }
>
> extern int pid_max;
> -static int zero = 0;
> static struct ctl_table pid_ns_ctl_table[] = {
> {
> .procname = "ns_last_pid",
> .maxlen = sizeof(int),
> .mode = 0666, /* permissions are checked in the handler */
> .proc_handler = pid_ns_ctl_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &pid_max,
> },
> { }
> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
> index 553b19439714..d6f4b26951e1 100644
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -123,9 +123,6 @@ static int sixty = 60;
> #endif
>
> static int __maybe_unused neg_one = -1;
> -
> -static int zero;
> -static int __maybe_unused one = 1;
> static int __maybe_unused two = 2;
> static int __maybe_unused four = 4;
> static unsigned long zero_ul;
> @@ -388,8 +385,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = sysctl_schedstats,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif /* CONFIG_SCHEDSTATS */
> #endif /* CONFIG_SMP */
> @@ -421,7 +418,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &one,
> + .extra1 = (void *)&sysctl_one,
> },
> {
> .procname = "numa_balancing",
> @@ -429,8 +426,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = sysctl_numa_balancing,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif /* CONFIG_NUMA_BALANCING */
> #endif /* CONFIG_SCHED_DEBUG */
> @@ -462,8 +459,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #ifdef CONFIG_CFS_BANDWIDTH
> @@ -473,7 +470,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &one,
> + .extra1 = (void *)&sysctl_one,
> },
> #endif
> #if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL)
> @@ -483,8 +480,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = sched_energy_aware_handler,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #ifdef CONFIG_PROVE_LOCKING
> @@ -549,7 +546,7 @@ static struct ctl_table kern_table[] = {
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> .extra1 = &neg_one,
> - .extra2 = &one,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #ifdef CONFIG_LATENCYTOP
> @@ -683,8 +680,8 @@ static struct ctl_table kern_table[] = {
> .mode = 0644,
> /* only handle a transition from default "0" to "1" */
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &one,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_one,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #ifdef CONFIG_MODULES
> @@ -702,8 +699,8 @@ static struct ctl_table kern_table[] = {
> .mode = 0644,
> /* only handle a transition from default "0" to "1" */
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &one,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_one,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #ifdef CONFIG_UEVENT_HELPER
> @@ -862,7 +859,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &ten_thousand,
> },
> {
> @@ -878,8 +875,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax_sysadmin,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "kptr_restrict",
> @@ -887,7 +884,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax_sysadmin,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &two,
> },
> #endif
> @@ -912,8 +909,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_watchdog,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "watchdog_thresh",
> @@ -921,7 +918,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_watchdog_thresh,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &sixty,
> },
> {
> @@ -930,8 +927,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = NMI_WATCHDOG_SYSCTL_PERM,
> .proc_handler = proc_nmi_watchdog,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "watchdog_cpumask",
> @@ -947,8 +944,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_soft_watchdog,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "softlockup_panic",
> @@ -956,8 +953,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #ifdef CONFIG_SMP
> {
> @@ -966,8 +963,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif /* CONFIG_SMP */
> #endif
> @@ -978,8 +975,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #ifdef CONFIG_SMP
> {
> @@ -988,8 +985,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif /* CONFIG_SMP */
> #endif
> @@ -1102,8 +1099,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "hung_task_check_count",
> @@ -1111,7 +1108,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> {
> .procname = "hung_task_timeout_secs",
> @@ -1188,7 +1185,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(sysctl_perf_event_sample_rate),
> .mode = 0644,
> .proc_handler = perf_proc_update_handler,
> - .extra1 = &one,
> + .extra1 = (void *)&sysctl_one,
> },
> {
> .procname = "perf_cpu_time_max_percent",
> @@ -1196,7 +1193,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(sysctl_perf_cpu_time_max_percent),
> .mode = 0644,
> .proc_handler = perf_cpu_time_max_percent_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &one_hundred,
> },
> {
> @@ -1205,7 +1202,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(sysctl_perf_event_max_stack),
> .mode = 0644,
> .proc_handler = perf_event_max_stack_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &six_hundred_forty_kb,
> },
> {
> @@ -1214,7 +1211,7 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(sysctl_perf_event_max_contexts_per_stack),
> .mode = 0644,
> .proc_handler = perf_event_max_stack_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &one_thousand,
> },
> #endif
> @@ -1224,8 +1221,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON)
> {
> @@ -1234,8 +1231,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = timer_migration_handler,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #ifdef CONFIG_BPF_SYSCALL
> @@ -1246,8 +1243,8 @@ static struct ctl_table kern_table[] = {
> .mode = 0644,
> /* only handle a transition from default "0" to "1" */
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &one,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_one,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "bpf_stats_enabled",
> @@ -1255,8 +1252,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(sysctl_bpf_stats_enabled),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax_bpf_stats,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #if defined(CONFIG_TREE_RCU) || defined(CONFIG_PREEMPT_RCU)
> @@ -1266,8 +1263,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(sysctl_panic_on_rcu_stall),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #ifdef CONFIG_STACKLEAK_RUNTIME_DISABLE
> @@ -1277,8 +1274,8 @@ static struct ctl_table kern_table[] = {
> .maxlen = sizeof(int),
> .mode = 0600,
> .proc_handler = stack_erasing_sysctl,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> { }
> @@ -1291,7 +1288,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_overcommit_memory),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &two,
> },
> {
> @@ -1300,7 +1297,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_panic_on_oom),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &two,
> },
> {
> @@ -1337,7 +1334,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> {
> .procname = "dirty_background_ratio",
> @@ -1345,7 +1342,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(dirty_background_ratio),
> .mode = 0644,
> .proc_handler = dirty_background_ratio_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &one_hundred,
> },
> {
> @@ -1362,7 +1359,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(vm_dirty_ratio),
> .mode = 0644,
> .proc_handler = dirty_ratio_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &one_hundred,
> },
> {
> @@ -1386,7 +1383,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(dirty_expire_interval),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> {
> .procname = "dirtytime_expire_seconds",
> @@ -1394,7 +1391,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(dirtytime_expire_interval),
> .mode = 0644,
> .proc_handler = dirtytime_interval_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> {
> .procname = "swappiness",
> @@ -1402,7 +1399,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(vm_swappiness),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &one_hundred,
> },
> #ifdef CONFIG_HUGETLB_PAGE
> @@ -1427,8 +1424,8 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = sysctl_vm_numa_stat_handler,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> {
> @@ -1459,7 +1456,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = drop_caches_sysctl_handler,
> - .extra1 = &one,
> + .extra1 = (void *)&sysctl_one,
> .extra2 = &four,
> },
> #ifdef CONFIG_COMPACTION
> @@ -1485,8 +1482,8 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
>
> #endif /* CONFIG_COMPACTION */
> @@ -1496,7 +1493,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(min_free_kbytes),
> .mode = 0644,
> .proc_handler = min_free_kbytes_sysctl_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> {
> .procname = "watermark_boost_factor",
> @@ -1504,7 +1501,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(watermark_boost_factor),
> .mode = 0644,
> .proc_handler = watermark_boost_factor_sysctl_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> {
> .procname = "watermark_scale_factor",
> @@ -1512,7 +1509,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(watermark_scale_factor),
> .mode = 0644,
> .proc_handler = watermark_scale_factor_sysctl_handler,
> - .extra1 = &one,
> + .extra1 = (void *)&sysctl_one,
> .extra2 = &one_thousand,
> },
> {
> @@ -1521,7 +1518,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(percpu_pagelist_fraction),
> .mode = 0644,
> .proc_handler = percpu_pagelist_fraction_sysctl_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> #ifdef CONFIG_MMU
> {
> @@ -1530,7 +1527,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_max_map_count),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> #else
> {
> @@ -1539,7 +1536,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_nr_trim_pages),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> #endif
> {
> @@ -1555,7 +1552,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(block_dump),
> .mode = 0644,
> .proc_handler = proc_dointvec,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> {
> .procname = "vfs_cache_pressure",
> @@ -1563,7 +1560,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_vfs_cache_pressure),
> .mode = 0644,
> .proc_handler = proc_dointvec,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> #ifdef HAVE_ARCH_PICK_MMAP_LAYOUT
> {
> @@ -1572,7 +1569,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_legacy_va_layout),
> .mode = 0644,
> .proc_handler = proc_dointvec,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> #endif
> #ifdef CONFIG_NUMA
> @@ -1582,7 +1579,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(node_reclaim_mode),
> .mode = 0644,
> .proc_handler = proc_dointvec,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> {
> .procname = "min_unmapped_ratio",
> @@ -1590,7 +1587,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_min_unmapped_ratio),
> .mode = 0644,
> .proc_handler = sysctl_min_unmapped_ratio_sysctl_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &one_hundred,
> },
> {
> @@ -1599,7 +1596,7 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_min_slab_ratio),
> .mode = 0644,
> .proc_handler = sysctl_min_slab_ratio_sysctl_handler,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &one_hundred,
> },
> #endif
> @@ -1650,7 +1647,7 @@ static struct ctl_table vm_table[] = {
> #endif
> .mode = 0644,
> .proc_handler = proc_dointvec,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> },
> #endif
> #ifdef CONFIG_HIGHMEM
> @@ -1660,8 +1657,8 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(vm_highmem_is_dirtyable),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> #ifdef CONFIG_MEMORY_FAILURE
> @@ -1671,8 +1668,8 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_memory_failure_early_kill),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "memory_failure_recovery",
> @@ -1680,8 +1677,8 @@ static struct ctl_table vm_table[] = {
> .maxlen = sizeof(sysctl_memory_failure_recovery),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> {
> @@ -1853,8 +1850,8 @@ static struct ctl_table fs_table[] = {
> .maxlen = sizeof(int),
> .mode = 0600,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "protected_hardlinks",
> @@ -1862,8 +1859,8 @@ static struct ctl_table fs_table[] = {
> .maxlen = sizeof(int),
> .mode = 0600,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> {
> .procname = "protected_fifos",
> @@ -1871,7 +1868,7 @@ static struct ctl_table fs_table[] = {
> .maxlen = sizeof(int),
> .mode = 0600,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &two,
> },
> {
> @@ -1880,7 +1877,7 @@ static struct ctl_table fs_table[] = {
> .maxlen = sizeof(int),
> .mode = 0600,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &two,
> },
> {
> @@ -1889,7 +1886,7 @@ static struct ctl_table fs_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax_coredump,
> - .extra1 = &zero,
> + .extra1 = (void *)&sysctl_zero,
> .extra2 = &two,
> },
> #if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
> @@ -1926,7 +1923,7 @@ static struct ctl_table fs_table[] = {
> .maxlen = sizeof(unsigned int),
> .mode = 0644,
> .proc_handler = proc_dointvec_minmax,
> - .extra1 = &one,
> + .extra1 = (void *)&sysctl_one,
> },
> { }
> };
> @@ -1948,8 +1945,8 @@ static struct ctl_table debug_table[] = {
> .maxlen = sizeof(int),
> .mode = 0644,
> .proc_handler = proc_kprobes_optimization_handler,
> - .extra1 = &zero,
> - .extra2 = &one,
> + .extra1 = (void *)&sysctl_zero,
> + .extra2 = (void *)&sysctl_one,
> },
> #endif
> { }
> diff --git a/kernel/ucount.c b/kernel/ucount.c
> index f48d1b6376a4..ba7b8282d299 100644
> --- a/kernel/ucount.c
> +++ b/kernel/ucount.c
> @@ -57,16 +57,14 @@ static struct ctl_table_root set_root = {
> .permissions = set_permissions,
> };
>
> -static int zero = 0;
> -static int int_max = INT_MAX;
> #define UCOUNT_ENTRY(name) \
> { \
> .procname = name, \
> .maxlen = sizeof(int), \
> .mode = 0644, \
> .proc_handler = proc_dointvec_minmax, \
> - .extra1 = &zero, \
> - .extra2 = &int_max, \
> + .extra1 = (void *)&sysctl_zero, \
> + .extra2 = (void *)&sysctl_int_max, \
> }
> static struct ctl_table user_table[] = {
> UCOUNT_ENTRY("max_user_namespaces"),
> --
> 2.21.0
>
--
Kees Cook
Powered by blists - more mailing lists