• Xiaoming Ni's avatar
    sysctl: add a new register_sysctl_init() interface · 3ddd9a80
    Xiaoming Ni authored
    Patch series "sysctl: first set of kernel/sysctl cleanups", v2.
    
    Finally had time to respin the series of the work we had started last
    year on cleaning up the kernel/sysct.c kitchen sink.  People keeps
    stuffing their sysctls in that file and this creates a maintenance
    burden.  So this effort is aimed at placing sysctls where they actually
    belong.
    
    I'm going to split patches up into series as there is quite a bit of
    work.
    
    This first set adds register_sysctl_init() for uses of registerting a
    sysctl on the init path, adds const where missing to a few places,
    generalizes common values so to be more easy to share, and starts the
    move of a few kernel/sysctl.c out where they belong.
    
    The majority of rework on v2 in this first patch set is 0-day fixes.
    Eric Biederman's feedback is later addressed in subsequent patch sets.
    
    I'll only post the first two patch sets for now.  We can address the
    rest once the first two patch sets get completely reviewed / Acked.
    
    This patch (of 9):
    
    The kernel/sysctl.c is a kitchen sink where everyone leaves their dirty
    dishes, this makes it very difficult to maintain.
    
    To help with this maintenance let's start by moving sysctls to places
    where they actually belong.  The proc sysctl maintainers do not want to
    know what sysctl knobs you wish to add for your own piece of code, we
    just care about the core logic.
    
    Today though folks heavily rely on tables on kernel/sysctl.c so they can
    easily just extend this table with their needed sysctls.  In order to
    help users move their sysctls out we need to provide a helper which can
    be used during code initialization.
    
    We special-case the initialization use of register_sysctl() since it
    *is* safe to fail, given all that sysctls do is provide a dynamic
    interface to query or modify at runtime an existing variable.  So the
    use case of register_sysctl() on init should *not* stop if the sysctls
    don't end up getting registered.  It would be counter productive to stop
    boot if a simple sysctl registration failed.
    
    Provide a helper for init then, and document the recommended init levels
    to use for callers of this routine.  We will later use this in
    subsequent patches to start slimming down kernel/sysctl.c tables and
    moving sysctl registration to the code which actually needs these
    sysctls.
    
    [mcgrof@kernel.org: major commit log and documentation rephrasing also moved to fs/proc/proc_sysctl.c                  ]
    
    Link: https://lkml.kernel.org/r/20211123202347.818157-1-mcgrof@kernel.org
    Link: https://lkml.kernel.org/r/20211123202347.818157-2-mcgrof@kernel.orgSigned-off-by: default avatarXiaoming Ni <nixiaoming@huawei.com>
    Signed-off-by: default avatarLuis Chamberlain <mcgrof@kernel.org>
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Cc: Iurii Zaikin <yzaikin@google.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Paul Turner <pjt@google.com>
    Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Cc: Sebastian Reichel <sre@kernel.org>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
    Cc: Qing Wang <wangqing@vivo.com>
    Cc: Benjamin LaHaise <bcrl@kvack.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Amir Goldstein <amir73il@gmail.com>
    Cc: Stephen Kitt <steve@sk2.org>
    Cc: Antti Palosaari <crope@iki.fi>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Clemens Ladisch <clemens@ladisch.de>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Jani Nikula <jani.nikula@linux.intel.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Cc: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: Julia Lawall <julia.lawall@inria.fr>
    Cc: Lukas Middendorf <kernel@tuxforce.de>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Phillip Potter <phil@philpotter.co.uk>
    Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Cc: Douglas Gilbert <dgilbert@interlog.com>
    Cc: James E.J. Bottomley <jejb@linux.ibm.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: John Ogness <john.ogness@linutronix.de>
    Cc: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Suren Baghdasaryan <surenb@google.com>
    Cc: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    3ddd9a80
proc_sysctl.c 47.1 KB