sysctl: remove CONFIG_PROC_SYSCTL, it just mirrors CONFIG_SYSCTL
Subsystems (12)
v2 cover sysctl: remove CONFIG_PROC_SYSCTL, it just mirrors CONFIG_SYSCTL
Andrew, this patch depends on
sysctl-move-the-cad_pid-entry-from-pid_table-to-kern_reboot_table.patch
in -mm tree, because that patch removes one CONFIG_PROC_SYSCTL too.
If this patch is accepted, I'll send a couple of followup cleanups:
kernel/sysctl.c:
collapse the now-identical CONFIG_SYSCTL nesting
drivers/parport/procfs.c, fs/dcache.c, and fs/file_table.c:
drop the CONFIG_PROC_FS checks, now it is clear that CONFIG_SYSCTL depends on it
Oleg.
---
arch/m68k/configs/amcore_defconfig | 2 +- arch/m68k/configs/stmark2_defconfig | 2 +- arch/s390/Kconfig | 4 ++-- arch/x86/kernel/cpu/bus_lock.c | 2 +- fs/proc/Kconfig | 3 +-- fs/proc/Makefile | 2 +- fs/proc/internal.h | 2 +- include/linux/utsname.h | 2 +- init/Kconfig | 3 --- kernel/delayacct.c | 2 +- kernel/sched/core.c | 8 ++++---- kernel/sched/topology.c | 4 ++-- kernel/sysctl.c | 12 ++++++------ kernel/time/jiffies.c | 4 ++-- kernel/utsname_sysctl.c | 4 ++-- lib/Kconfig.debug | 2 +- lib/test_sysctl.c | 2 +- net/mpls/Kconfig | 2 +- tools/testing/selftests/net/config | 2 +- tools/testing/selftests/net/packetdrill/config | 2 +- tools/testing/selftests/wireguard/qemu/kernel.config | 2 +- 21 files changed, 32 insertions(+), 36 deletions(-)
PATCH v2 1/1 sysctl: remove CONFIG_PROC_SYSCTL, it just mirrors CONFIG_SYSCTL
CONFIG_SYSCTL used to make sense as a separate hidden bool before commit 61a47c1ad3a4 ("sysctl: Remove the sysctl system call"); it was selected by both CONFIG_SYSCTL_SYSCALL and CONFIG_PROC_SYSCTL.
Today CONFIG_PROC_SYSCTL is the only selector, so the two are always equal. Kill the hidden bool, rename the PROC_SYSCTL prompt to SYSCTL, and s/CONFIG_PROC_SYSCTL/CONFIG_SYSCTL/ tree-wide.
--- arch/m68k/configs/amcore_defconfig | 2 +- arch/m68k/configs/stmark2_defconfig | 2 +- arch/s390/Kconfig | 4 ++-- arch/x86/kernel/cpu/bus_lock.c | 2 +- fs/proc/Kconfig | 3 +-- fs/proc/Makefile | 2 +- fs/proc/internal.h | 2 +- include/linux/utsname.h | 2 +- init/Kconfig | 3 --- kernel/delayacct.c | 2 +- kernel/sched/core.c | 8 ++++---- kernel/sched/topology.c | 4 ++-- kernel/sysctl.c | 12 ++++++------ kernel/time/jiffies.c | 4 ++-- kernel/utsname_sysctl.c | 4 ++-- lib/Kconfig.debug | 2 +- lib/test_sysctl.c | 2 +- net/mpls/Kconfig | 2 +- tools/testing/selftests/net/config | 2 +- tools/testing/selftests/net/packetdrill/config | 2 +- tools/testing/selftests/wireguard/qemu/kernel.config | 2 +- 21 files changed, 32 insertions(+), 36 deletions(-)
arch/m68k/configs/amcore_defconfig +1 -1
@@ -74,7 +74,7 @@ CONFIG_RTC_DRV_DS1307=y # CONFIG_DNOTIFY is not set # CONFIG_INOTIFY_USER is not set CONFIG_FSCACHE=y -# CONFIG_PROC_SYSCTL is not set +# CONFIG_SYSCTL is not set CONFIG_JFFS2_FS=y CONFIG_ROMFS_FS=y CONFIG_ROMFS_BACKED_BY_BOTH=y
arch/m68k/configs/stmark2_defconfig +1 -1
@@ -87,7 +87,7 @@ CONFIG_EXT4_FS_SECURITY=y # CONFIG_DNOTIFY is not set # CONFIG_INOTIFY_USER is not set CONFIG_OVERLAY_FS=y -# CONFIG_PROC_SYSCTL is not set +# CONFIG_SYSCTL is not set CONFIG_SQUASHFS=y CONFIG_XZ_DEC=y CONFIG_PRINTK_TIME=y
arch/s390/Kconfig +2 -2
@@ -575,7 +575,7 @@ config HIPERDISPATCH_ON def_bool y bool "Use hiperdispatch on vertical polarization by default" depends on SCHED_TOPOLOGY - depends on PROC_SYSCTL + depends on SYSCTL help Hiperdispatch aims to improve the CPU scheduler's decision making when using vertical polarization by adjusting CPU
@@ -893,7 +893,7 @@ config CMM_IUCV config APPLDATA_BASE def_bool n prompt "Linux - VM Monitor Stream, base infrastructure" - depends on PROC_SYSCTL + depends on SYSCTL help This provides a kernel interface for creating and updating z/VM APPLDATA monitor records. The monitor records are updated at certain time
arch/x86/kernel/cpu/bus_lock.c +1 -1
@@ -50,7 +50,7 @@ static struct ratelimit_state bld_ratelimit;static unsigned int sysctl_sld_mitigate =1 ; static DEFINE_SEMAPHORE(buslock_sem, 1); -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL static const struct ctl_table sld_sysctls[] = { { .procname = "split_lock_mitigate",
fs/proc/Kconfig +1 -2
@@ -80,10 +80,9 @@ config PROC_VMCORE_DEVICE_RAM Relevant architectures should select NEED_PROC_VMCORE_DEVICE_RAM. -config PROC_SYSCTL +config SYSCTL bool "Sysctl support (/proc/sys)" if EXPERT depends on PROC_FS - select SYSCTL default y help The sysctl interface provides a means of dynamically changing
fs/proc/Makefile +1 -1
@@ -29,7 +29,7 @@ proc-y += softirqs.o proc-y += namespaces.o proc-y += self.o proc-y += thread_self.o -proc-$(CONFIG_PROC_SYSCTL) += proc_sysctl.o +proc-$(CONFIG_SYSCTL) += proc_sysctl.o proc-$(CONFIG_NET) += proc_net.o proc-$(CONFIG_PROC_KCORE) += kcore.o proc-$(CONFIG_PROC_VMCORE) += vmcore.o
fs/proc/internal.h +1 -1
@@ -351,7 +351,7 @@ extern void proc_thread_self_init(void);/* * proc_sysctl.c */ -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL extern int proc_sys_init (void );extern void proc_sys_evict_inode (struct inode *inode,struct ctl_table_header *head);
include/linux/utsname.h +1 -1
@@ -18,7 +18,7 @@ enum uts_proc { UTS_PROC_DOMAINNAME, }; -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL extern void uts_proc_notify (enum uts_proc proc);#else static inline void uts_proc_notify (enum uts_proc proc)
init/Kconfig +0 -3
@@ -1661,9 +1661,6 @@ config LD_ORPHAN_WARN_LEVEL default "error" if WERROR default "warn" -config SYSCTL - bool - config HAVE_UID16 bool
kernel/delayacct.c +1 -1
@@ -54,7 +54,7 @@ void delayacct_init(void)set_delayacct (delayacct_on); } -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL static int sysctl_delayacct (const struct ctl_table *table,int write,void *buffer,size_t *lenp,loff_t *ppos) {
kernel/sched/core.c +4 -4
@@ -4638,7 +4638,7 @@ void set_numabalancing_state(bool enabled)__set_numabalancing_state (enabled); } -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL static void reset_memory_tiering (void ) {struct pglist_data *pgdat;
@@ -4674,7 +4674,7 @@ static int sysctl_numa_balancing(const struct ctl_table *table, int write, }return err; } -#endif /* CONFIG_PROC_SYSCTL */ +#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_NUMA_BALANCING */ #ifdef CONFIG_SCHEDSTATS
@@ -4718,7 +4718,7 @@ static int __init setup_schedstats(char *str) }__setup ("schedstats=" , setup_schedstats); -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL static int sysctl_schedstats (const struct ctl_table *table,int write,void *buffer,size_t *lenp,loff_t *ppos) {
@@ -4738,7 +4738,7 @@ static int sysctl_schedstats(const struct ctl_table *table, int write, void *bufset_schedstats (state);return err; } -#endif /* CONFIG_PROC_SYSCTL */ +#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SCHEDSTATS */ #ifdef CONFIG_SYSCTL
kernel/sched/topology.c +2 -2
@@ -271,7 +271,7 @@ void rebuild_sched_domains_energy(void)mutex_unlock (&sched_energy_mutex); } -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL static int sched_energy_aware_handler (const struct ctl_table *table,int write,void *buffer,size_t *lenp,loff_t *ppos) {
@@ -317,7 +317,7 @@ static int __init sched_energy_aware_sysctl_init(void) }late_initcall (sched_energy_aware_sysctl_init); -#endif /* CONFIG_PROC_SYSCTL */ +#endif /* CONFIG_SYSCTL */ static void free_pd (struct perf_domain *pd) {
kernel/sysctl.c +6 -6
@@ -35,7 +35,7 @@ EXPORT_SYMBOL_GPL(sysctl_long_vals);static const int ngroups_max =NGROUPS_MAX ;static const int cap_last_cap =CAP_LAST_CAP ; -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL /** * enum sysctl_writes_mode - supported sysctl write modes
@@ -64,14 +64,14 @@ enum sysctl_writes_mode { };static enum sysctl_writes_mode sysctl_writes_strict =SYSCTL_WRITES_STRICT ; -#endif /* CONFIG_PROC_SYSCTL */ +#endif /* CONFIG_SYSCTL */ #endif /* CONFIG_SYSCTL */ /* * /proc/sys support */ -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL static int _proc_do_string (char *data,int maxlen,int dir,char *buffer,size_t *lenp,loff_t *ppos)
@@ -1240,7 +1240,7 @@ int proc_do_large_bitmap(const struct ctl_table *table, int dir, return err; } -#else /* CONFIG_PROC_SYSCTL */ +#else /* CONFIG_SYSCTL */ int proc_dostring (const struct ctl_table *table,int dir,void *buffer,size_t *lenp,loff_t *ppos)
@@ -1338,7 +1338,7 @@ int proc_do_large_bitmap(const struct ctl_table *table, int dir,return -ENOSYS ; } -#endif /* CONFIG_PROC_SYSCTL */ +#endif /* CONFIG_SYSCTL */ #if defined(CONFIG_SYSCTL ) int proc_do_static_key(const struct ctl_table *table, int dir,
@@ -1372,7 +1372,7 @@ int proc_do_static_key(const struct ctl_table *table, int dir, }static const struct ctl_table sysctl_subsys_table[] = { -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL { .procname ="sysctl_writes_strict" , .data = &sysctl_writes_strict,
kernel/time/jiffies.c +2 -2
@@ -98,7 +98,7 @@ void __init register_refined_jiffies(long cycles_per_second)__clocksource_register (&refined_jiffies); } -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL static ulong mult_hz (const ulong val) {return val *HZ ;
@@ -185,7 +185,7 @@ static int do_proc_int_conv_ms_jiffies_minmax(bool *negp, ulong *u_ptr, sysctl_u2k_int_conv_ms, sysctl_k2u_int_conv_ms); } -#else // CONFIG_PROC_SYSCTL +#else // CONFIG_SYSCTL static int do_proc_int_conv_jiffies (bool *negp,ulong *u_ptr,int *k_ptr,int dir,const struct ctl_table *tbl) {
kernel/utsname_sysctl.c +2 -2
@@ -13,7 +13,7 @@#include <linux/wait.h> #include <linux/rwsem.h> -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL static void *get_uts (const struct ctl_table *table) {
@@ -122,7 +122,7 @@ static const struct ctl_table uts_kern_table[] = { }, }; -#ifdef CONFIG_PROC_SYSCTL +#ifdef CONFIG_SYSCTL /* * Notify userspace about a change in a certain entry of uts_kern_table, * identified by the parameter proc.
lib/Kconfig.debug +1 -1
@@ -2710,7 +2710,7 @@ config TEST_FIRMWARE config TEST_SYSCTL tristate "sysctl test driver" - depends on PROC_SYSCTL + depends on SYSCTL help This builds the "test_sysctl" module. This driver enables to test the proc sysctl interfaces available to drivers safely without affecting
lib/test_sysctl.c +1 -1
@@ -7,7 +7,7 @@/* * This module provides an interface to the proc sysctl interfaces. This -* driver requires CONFIG_PROC_SYSCTL. It will not normally be loaded by the +* driver requires CONFIG_SYSCTL. It will not normally be loaded by the * system unless explicitly requested by name. You can also build this driver * into your kernel. */
net/mpls/Kconfig +1 -1
@@ -26,7 +26,7 @@ config NET_MPLS_GSO config MPLS_ROUTING tristate "MPLS: routing support" depends on NET_IP_TUNNEL || NET_IP_TUNNEL=n - depends on PROC_SYSCTL + depends on SYSCTL help Add support for forwarding of mpls packets.
tools/testing/selftests/net/config +1 -1
@@ -118,7 +118,7 @@ CONFIG_OPENVSWITCH_GENEVE=m CONFIG_OPENVSWITCH_GRE=m CONFIG_OPENVSWITCH_VXLAN=m CONFIG_PAGE_POOL_STATS=y -CONFIG_PROC_SYSCTL=y +CONFIG_SYSCTL=y CONFIG_PSAMPLE=m CONFIG_RPS=y CONFIG_SYN_COOKIES=y
tools/testing/selftests/net/packetdrill/config +1 -1
@@ -4,7 +4,7 @@ CONFIG_IPV6=y CONFIG_NET_NS=y CONFIG_NET_SCH_FIFO=y CONFIG_NET_SCH_FQ=y -CONFIG_PROC_SYSCTL=y +CONFIG_SYSCTL=y CONFIG_SYN_COOKIES=y CONFIG_TCP_CONG_CUBIC=y CONFIG_TCP_MD5SIG=y
tools/testing/selftests/wireguard/qemu/kernel.config +1 -1
@@ -63,7 +63,7 @@ CONFIG_FILE_LOCKING=y CONFIG_POSIX_TIMERS=y CONFIG_DEVTMPFS=y CONFIG_PROC_FS=y -CONFIG_PROC_SYSCTL=y +CONFIG_SYSCTL=y CONFIG_SYSFS=y CONFIG_TMPFS=y CONFIG_CONSOLE_LOGLEVEL_DEFAULT=15
Signature · 1 line
2.52.0
Quoted 10 lines · Oleg Nesterov
CONFIG_SYSCTLused to make sense as a separate hidden bool before commit61a47c1ad3a4("sysctl: Remove the sysctl system call"); it was selected by bothCONFIG_SYSCTL_SYSCALLandCONFIG_PROC_SYSCTL.Today
CONFIG_PROC_SYSCTLis the only selector, so the two are always equal. Kill the hidden bool, rename thePROC_SYSCTLprompt to SYSCTL, and s/CONFIG_PROC_SYSCTL/CONFIG_SYSCTL/ tree-wide.Signed-off-by Oleg Nesterov <[email protected]>---
[...]
Quoted 6 lines
fs/proc/Kconfig +0
-0@@ -80,10 +80,9 @@ config PROC_VMCORE_DEVICE_RAM
fs/proc/Kconfig config PROC_VMCORE_DEVICE_RAM · line 88
Quoted 10 lines
fs/proc/Kconfig +1
-2Relevant architectures should select NEED_PROC_VMCORE_DEVICE_RAM. -config PROC_SYSCTL +config SYSCTL bool "Sysctl support (/proc/sys)" if EXPERT depends on PROC_FS - select SYSCTL default y help The sysctl interface provides a means of dynamically changing
Please be aware that renaming of Kconfig symbols may not be welcomed due to unwanted effects for users and for bisecting, cp. last paragraph of
https://docs.kernel.org/process/handling-regressions.html#handling-regressions
and the original thread.
Personally, I do understand that it makes sense to clean this up, here. As the default was and stays 'y' this should affect only "few" users, but still I am feeling ambigious about it.
Sorry for missing to point to that at the RFC.
Kind regards,
Nicolas
Quoted 14 lines · Nicolas Schier
fs/proc/Kconfig config PROC_VMCORE_DEVICE_RAM · line 88
Quoted 9 lines · Oleg Nesterov
fs/proc/Kconfig +1
-2-config PROC_SYSCTL +config SYSCTL bool "Sysctl support (/proc/sys)" if EXPERT depends on PROC_FS - select SYSCTL default y help The sysctl interface provides a means of dynamically changingPlease be aware that renaming of
Kconfigsymbols may not be welcomed due to unwanted effects for users and for bisecting, cp. last paragraph of
You mean "Renaming config parameters is *bad*.". Yes, this was my concern too, please see below.
Quoted 5 lines
Personally, I do understand that it makes sense to clean this up, here. As the default was and stays 'y' this should affect only "few" users, but still I am feeling ambigious about it.
Sorry for missing to point to that at the RFC.
That is why the previous [RFC PATCH 1/1] killed the hidden SYSCTL, not PROC_SYSCTL.
But that patch touched 170 files and the output from get_maintainer.pl was huge.
From [RFC PATCH 0/1]:
Alternatively, we could kill CONFIG_PROC_SYSCTL in favour of CONFIG_SYSCTL. This would result in a much smaller patch, but I am not sure if it is "safe" because CONFIG_PROC_SYSCTL is user-visible in that it has a prompt in fs/proc/Kconfig. But perhaps this is fine?
and after discussion with Eric we came to conclusion that "probably this is fine" in thic case.
I do think it makes sense to cleanup the usage of PROC_SYSCTL/SYSCTL (kill one of them). Just look at kernel/pid.c. It defines the "static int proc_do_cad_pid()" if CONFIG_SYSCTL, but this function is only used if CONFIG_PROC_SYSCTL. This looks obviously wrong until you grep Kconfig's and realize that both are the same thing.
Oleg.
Quoted 6 lines · Oleg Nesterov
Andrew, this patch depends on
sysctl-move-the-cad_pid-entry-from-pid_table-to-kern_reboot_table.patch
in -mm tree, because that patch removes one
CONFIG_PROC_SYSCTLtoo.
Just in case...
From https://sashiko.dev/#/patchset/amdveg1m4E4uQlGv%40redhat.com
Did this tree-wide rename miss an instance in kernel/pid.c?
This instance was already removed by
sysctl-move-the-cad_pid-entry-from-pid_table-to-kern_reboot_table.patch
mentioned above. And this is exactly why this patch is based on -mm.
Oleg.
Andrew Morton
maintainerQuoted 12 lines · On Mon, 27 Jul 2026 19:00:30 +0200 Oleg Nesterov <[email protected]> wrote:
Quoted 6 lines · Oleg Nesterov
Andrew, this patch depends on
sysctl-move-the-cad_pid-entry-from-pid_table-to-kern_reboot_table.patch
in -mm tree, because that patch removes one
CONFIG_PROC_SYSCTLtoo.Just in case...
Quoted 1 line
From https://sashiko.dev/#/patchset/amdveg1m4E4uQlGv%40redhat.com
Quoted 7 lines
Did this tree-wide rename miss an instance in
kernel/pid.c?This instance was already removed by
sysctl-move-the-cad_pid-entry-from-pid_table-to-kern_reboot_table.patch
mentioned above. And this is exactly why this patch is based on -mm.
Yeah, Sashiko tried the patch against net/HEAD, found that it applied then went for it.
Perhaps it would be better for Sashiko to attempt linux-next first.