Message ID | 20230523122220.1610825-8-j.granados@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | sysctl: Completely remove register_sysctl_table from sources | expand |
On Tue, May 23, 2023 at 02:22:19PM +0200, Joel Granados wrote: > This is part of the general push to deprecate register_sysctl_paths and > register_sysctl_table. The old way of doing this through > register_sysctl_base and DECLARE_SYSCTL_BASE macro is replaced with a > call to register_sysctl_init. The 5 base paths affected are: "kernel", > "vm", "debug", "dev" and "fs". > > We remove the register_sysctl_base function and the DECLARE_SYSCTL_BASE > macro since they are no longer needed. > > In order to quickly acertain that the paths did not actually change I > executed `find /proc/sys/ | sha1sum` and made sure that the sha was the > same before and after the commit. > > We end up saving 563 bytes with this change: > > ./scripts/bloat-o-meter vmlinux.0.base vmlinux.1.refactor-base-paths > add/remove: 0/5 grow/shrink: 2/0 up/down: 77/-640 (-563) > Function old new delta > sysctl_init_bases 55 111 +56 > init_fs_sysctls 12 33 +21 > vm_base_table 128 - -128 > kernel_base_table 128 - -128 > fs_base_table 128 - -128 > dev_base_table 128 - -128 > debug_base_table 128 - -128 > Total: Before=21258215, After=21257652, chg -0.00% > > Signed-off-by: Joel Granados <j.granados@samsung.com> > [mcgrof: modified to use register_sysctl_init() over register_sysctl() > and add bloat-o-meter stats] > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> > Tested-by: Stephen Rothwell <sfr@canb.auug.org.au> > --- Acked-by: Christian Brauner <brauner@kernel.org>
On Tue, May 23, 2023 at 02:22:19PM +0200, Joel Granados wrote: > This is part of the general push to deprecate register_sysctl_paths and > register_sysctl_table. The old way of doing this through > register_sysctl_base and DECLARE_SYSCTL_BASE macro is replaced with a > call to register_sysctl_init. The 5 base paths affected are: "kernel", > "vm", "debug", "dev" and "fs". > > We remove the register_sysctl_base function and the DECLARE_SYSCTL_BASE > macro since they are no longer needed. > > In order to quickly acertain that the paths did not actually change I > executed `find /proc/sys/ | sha1sum` and made sure that the sha was the > same before and after the commit. > > We end up saving 563 bytes with this change: > > ./scripts/bloat-o-meter vmlinux.0.base vmlinux.1.refactor-base-paths > add/remove: 0/5 grow/shrink: 2/0 up/down: 77/-640 (-563) > Function old new delta > sysctl_init_bases 55 111 +56 > init_fs_sysctls 12 33 +21 > vm_base_table 128 - -128 > kernel_base_table 128 - -128 > fs_base_table 128 - -128 > dev_base_table 128 - -128 > debug_base_table 128 - -128 > Total: Before=21258215, After=21257652, chg -0.00% > > Signed-off-by: Joel Granados <j.granados@samsung.com> > [mcgrof: modified to use register_sysctl_init() over register_sysctl() > and add bloat-o-meter stats] > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> > Tested-by: Stephen Rothwell <sfr@canb.auug.org.au> This needs a Fixes tag so it doesn't get backported by some weird fluke. Or you could just fold it in with the original patch which introduced the bug. Probably add a copy of the output from dmesg? Maybe add some Reported-by tags? regards, dan carpenter >
On Thu, May 25, 2023 at 11:37:47AM +0300, Dan Carpenter wrote: > On Tue, May 23, 2023 at 02:22:19PM +0200, Joel Granados wrote: > > This is part of the general push to deprecate register_sysctl_paths and > > register_sysctl_table. The old way of doing this through > > register_sysctl_base and DECLARE_SYSCTL_BASE macro is replaced with a > > call to register_sysctl_init. The 5 base paths affected are: "kernel", > > "vm", "debug", "dev" and "fs". > > > > We remove the register_sysctl_base function and the DECLARE_SYSCTL_BASE > > macro since they are no longer needed. > > > > In order to quickly acertain that the paths did not actually change I > > executed `find /proc/sys/ | sha1sum` and made sure that the sha was the > > same before and after the commit. > > > > We end up saving 563 bytes with this change: > > > > ./scripts/bloat-o-meter vmlinux.0.base vmlinux.1.refactor-base-paths > > add/remove: 0/5 grow/shrink: 2/0 up/down: 77/-640 (-563) > > Function old new delta > > sysctl_init_bases 55 111 +56 > > init_fs_sysctls 12 33 +21 > > vm_base_table 128 - -128 > > kernel_base_table 128 - -128 > > fs_base_table 128 - -128 > > dev_base_table 128 - -128 > > debug_base_table 128 - -128 > > Total: Before=21258215, After=21257652, chg -0.00% > > > > Signed-off-by: Joel Granados <j.granados@samsung.com> > > [mcgrof: modified to use register_sysctl_init() over register_sysctl() > > and add bloat-o-meter stats] > > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> > > Tested-by: Stephen Rothwell <sfr@canb.auug.org.au> > > This needs a Fixes tag so it doesn't get backported by some weird fluke. > Or you could just fold it in with the original patch which introduced I folded it into the original patch thx Best > the bug. > > Probably add a copy of the output from dmesg? Maybe add some > Reported-by tags? > > regards, > dan carpenter > >
diff --git a/fs/sysctls.c b/fs/sysctls.c index c701273c9432..76a0aee8c229 100644 --- a/fs/sysctls.c +++ b/fs/sysctls.c @@ -29,11 +29,10 @@ static struct ctl_table fs_shared_sysctls[] = { { } }; -DECLARE_SYSCTL_BASE(fs, fs_shared_sysctls); - static int __init init_fs_sysctls(void) { - return register_sysctl_base(fs); + register_sysctl_init("fs", fs_shared_sysctls); + return 0; } early_initcall(init_fs_sysctls); diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 218e56a26fb0..653b66c762b1 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h @@ -197,20 +197,6 @@ struct ctl_path { #ifdef CONFIG_SYSCTL -#define DECLARE_SYSCTL_BASE(_name, _table) \ -static struct ctl_table _name##_base_table[] = { \ - { \ - .procname = #_name, \ - .mode = 0555, \ - .child = _table, \ - }, \ - { }, \ -} - -extern int __register_sysctl_base(struct ctl_table *base_table); - -#define register_sysctl_base(_name) __register_sysctl_base(_name##_base_table) - void proc_sys_poll_notify(struct ctl_table_poll *poll); extern void setup_sysctl_set(struct ctl_table_set *p, @@ -247,15 +233,6 @@ extern struct ctl_table sysctl_mount_point[]; #else /* CONFIG_SYSCTL */ -#define DECLARE_SYSCTL_BASE(_name, _table) - -static inline int __register_sysctl_base(struct ctl_table *base_table) -{ - return 0; -} - -#define register_sysctl_base(table) __register_sysctl_base(table) - static inline void register_sysctl_init(const char *path, struct ctl_table *table) { } diff --git a/kernel/sysctl.c b/kernel/sysctl.c index bfe53e835524..73fa9cf7ee11 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -1782,11 +1782,6 @@ static struct ctl_table kern_table[] = { .mode = 0644, .proc_handler = sysctl_max_threads, }, - { - .procname = "usermodehelper", - .mode = 0555, - .child = usermodehelper_table, - }, { .procname = "overflowuid", .data = &overflowuid, @@ -1962,13 +1957,6 @@ static struct ctl_table kern_table[] = { .proc_handler = proc_dointvec, }, #endif -#ifdef CONFIG_KEYS - { - .procname = "keys", - .mode = 0555, - .child = key_sysctls, - }, -#endif #ifdef CONFIG_PERF_EVENTS /* * User-space scripts rely on the existence of this file @@ -2348,17 +2336,17 @@ static struct ctl_table dev_table[] = { { } }; -DECLARE_SYSCTL_BASE(kernel, kern_table); -DECLARE_SYSCTL_BASE(vm, vm_table); -DECLARE_SYSCTL_BASE(debug, debug_table); -DECLARE_SYSCTL_BASE(dev, dev_table); - int __init sysctl_init_bases(void) { - register_sysctl_base(kernel); - register_sysctl_base(vm); - register_sysctl_base(debug); - register_sysctl_base(dev); + register_sysctl_init("kernel", kern_table); + register_sysctl_init("kernel/usermodehelper", usermodehelper_table); +#ifdef CONFIG_KEYS + register_sysctl_init("kernel/keys", key_sysctls); +#endif + + register_sysctl_init("vm", vm_table); + register_sysctl_init("debug", debug_table); + register_sysctl_init("dev", dev_table); return 0; }