From: ebiederm@xmission.com (Eric W. Biederman) Currently sysctl_check_table will complain if a strategy routine is missing when we have sys_sysctl compiled out, or a proc_handler is missing when we have procfs compiled out. At least some of the custom handlers actually expand to NULL when this is the case so the warning is actually a problem. Valdis.Kletnieks@vt.edu writes: > As far as "something else wrong", I'm still seeing these in -rc3-mm1 > > [ 0.628000] sysctl table check failed: /kernel/ostype .1.1 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/osrelease .1.2 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/version .1.4 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/hostname .1.7 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/domainname .1.8 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/shmmax .1.34 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/shmall .1.41 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/shmmni .1.45 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/msgmax .1.35 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/msgmni .1.42 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/msgmnb .1.36 Missing strategy > [ 0.628000] sysctl table check failed: /kernel/sem .1.43 Missing strategy So don't worry about missing strategy routines, or missing proc_handler routines when they will never be called. Signed-off-by: Eric W. Biederman Signed-off-by: Andrew Morton --- kernel/sysctl_check.c | 4 ++++ 1 files changed, 4 insertions(+) diff -puN kernel/sysctl_check.c~sysctl-update-sysctl_check_table-sysctl-update-sysctl_check-to-handle-compiled-out-code kernel/sysctl_check.c --- a/kernel/sysctl_check.c~sysctl-update-sysctl_check_table-sysctl-update-sysctl_check-to-handle-compiled-out-code +++ a/kernel/sysctl_check.c @@ -1534,14 +1534,18 @@ int sysctl_check_table(struct ctl_table set_fail(&fail, table, "No max"); } } +#ifdef CONFIG_SYSCTL_SYSCALL if (table->ctl_name && !table->strategy) set_fail(&fail, table, "Missing strategy"); +#endif #if 0 if (!table->ctl_name && table->strategy) set_fail(&fail, table, "Strategy without ctl_name"); #endif +#ifdef CONFIG_PROC_FS if (table->procname && !table->proc_handler) set_fail(&fail, table, "No proc_handler"); +#endif #if 0 if (!table->procname && table->proc_handler) set_fail(&fail, table, "proc_handler without procname"); _