Move the umh sysctl registration to its own file, the array is
already there. We do this to remove the clutter out of kernel/sysctl.c
to avoid merge conflicts.
This also lets the sysctls not be built at all now when CONFIG_SYSCTL
is not enabled.
This has a small penalty of 23 bytes but soon we'll be removing
all the empty entries on sysctl arrays so just do this cleanup
now:
./scripts/bloat-o-meter vmlinux.base vmlinux.1
add/remove: 2/0 grow/shrink: 0/1 up/down: 49/-26 (23)
Function old new delta
init_umh_sysctls - 33 +33
__pfx_init_umh_sysctls - 16 +16
sysctl_init_bases 111 85 -26
Total: Before=21256914, After=21256937, chg +0.00%
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
include/linux/umh.h | 2 --
kernel/sysctl.c | 1 -
kernel/umh.c | 11 ++++++++++-
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/include/linux/umh.h b/include/linux/umh.h
index 5d1f6129b847..daa6a7048c11 100644
--- a/include/linux/umh.h
+++ b/include/linux/umh.h
@@ -42,8 +42,6 @@ call_usermodehelper_setup(const char *path, char **argv, char **envp,
extern int
call_usermodehelper_exec(struct subprocess_info *info, int wait);
-extern struct ctl_table usermodehelper_table[];
-
enum umh_disable_depth {
UMH_ENABLED = 0,
UMH_FREEZING,
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 241b817c0240..caf4a91522a1 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2322,7 +2322,6 @@ static struct ctl_table vm_table[] = {
int __init sysctl_init_bases(void)
{
register_sysctl_init("kernel", kern_table);
- register_sysctl_init("kernel/usermodehelper", usermodehelper_table);
#ifdef CONFIG_KEYS
register_sysctl_init("kernel/keys", key_sysctls);
#endif
diff --git a/kernel/umh.c b/kernel/umh.c
index 60aa9e764a38..41088c5c39fd 100644
--- a/kernel/umh.c
+++ b/kernel/umh.c
@@ -544,7 +544,8 @@ static int proc_cap_handler(struct ctl_table *table, int write,
return 0;
}
-struct ctl_table usermodehelper_table[] = {
+#if defined(CONFIG_SYSCTL)
+static struct ctl_table usermodehelper_table[] = {
{
.procname = "bset",
.data = &usermodehelper_bset,
@@ -561,3 +562,11 @@ struct ctl_table usermodehelper_table[] = {
},
{ }
};
+
+static int __init init_umh_sysctls(void)
+{
+ register_sysctl_init("kernel/usermodehelper", usermodehelper_table);
+ return 0;
+}
+early_initcall(init_umh_sysctls);
+#endif /* CONFIG_SYSCTL */
--
2.39.2
On Wed May 31, 2023 at 2:29 AM EEST, Luis Chamberlain wrote: > Move the umh sysctl registration to its own file, the array is > already there. We do this to remove the clutter out of kernel/sysctl.c > to avoid merge conflicts. > > This also lets the sysctls not be built at all now when CONFIG_SYSCTL > is not enabled. > > This has a small penalty of 23 bytes but soon we'll be removing > all the empty entries on sysctl arrays so just do this cleanup > now: > > ./scripts/bloat-o-meter vmlinux.base vmlinux.1 > add/remove: 2/0 grow/shrink: 0/1 up/down: 49/-26 (23) > Function old new delta > init_umh_sysctls - 33 +33 > __pfx_init_umh_sysctls - 16 +16 > sysctl_init_bases 111 85 -26 > Total: Before=21256914, After=21256937, chg +0.00% > > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> > --- > include/linux/umh.h | 2 -- > kernel/sysctl.c | 1 - > kernel/umh.c | 11 ++++++++++- > 3 files changed, 10 insertions(+), 4 deletions(-) Acked-by: Jarkko Sakkinen <jarkko@kernel.org> BR, Jarkko
© 2016 - 2025 Red Hat, Inc.