Re: [PATCH sysctl-next 1/2] sysctl: collapse redundant CONFIG_SYSCTL nesting in kernel/sysctl.c
From: Joel Granados
Date: Mon Aug 10 2026 - 07:10:51 EST
On Fri, Aug 07, 2026 at 05:47:44PM +0200, Oleg Nesterov wrote:
> After the removal of CONFIG_PROC_SYSCTL, several #ifdef CONFIG_SYSCTL
> blocks ended up nested inside the outer (now the same) CONFIG_SYSCTL
> guards.
>
> Collapse them and remove a now-stale "/proc/sys support" comment which
> referred to CONFIG_PROC_SYSCTL.
>
> Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx>
> ---
> kernel/sysctl.c | 16 ++--------------
> 1 file changed, 2 insertions(+), 14 deletions(-)
>
> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
> index f7b75985d542..d0a612c65b08 100644
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -29,14 +29,12 @@ EXPORT_SYMBOL(sysctl_vals);
> const unsigned long sysctl_long_vals[] = { 0, 1, LONG_MAX };
> EXPORT_SYMBOL_GPL(sysctl_long_vals);
>
> -#if defined(CONFIG_SYSCTL)
> +#ifdef CONFIG_SYSCTL
>
> /* Constants used for minimum and maximum */
> static const int ngroups_max = NGROUPS_MAX;
> static const int cap_last_cap = CAP_LAST_CAP;
>
> -#ifdef CONFIG_SYSCTL
> -
> /**
> * enum sysctl_writes_mode - supported sysctl write modes
> *
> @@ -64,14 +62,6 @@ enum sysctl_writes_mode {
> };
>
> static enum sysctl_writes_mode sysctl_writes_strict = SYSCTL_WRITES_STRICT;
> -#endif /* CONFIG_SYSCTL */
> -#endif /* CONFIG_SYSCTL */
> -
> -/*
> - * /proc/sys support
> - */
> -
> -#ifdef CONFIG_SYSCTL
>
> static int _proc_do_string(char *data, int maxlen, int dir,
> char *buffer, size_t *lenp, loff_t *ppos)
> @@ -1366,7 +1356,7 @@ int proc_do_large_bitmap(const struct ctl_table *table, int dir,
>
> #endif /* CONFIG_SYSCTL */
>
> -#if defined(CONFIG_SYSCTL)
> +#ifdef CONFIG_SYSCTL
> int proc_do_static_key(const struct ctl_table *table, int dir,
> void *buffer, size_t *lenp, loff_t *ppos)
> {
> @@ -1398,7 +1388,6 @@ int proc_do_static_key(const struct ctl_table *table, int dir,
> }
>
> static const struct ctl_table sysctl_subsys_table[] = {
> -#ifdef CONFIG_SYSCTL
> {
> .procname = "sysctl_writes_strict",
> .data = &sysctl_writes_strict,
> @@ -1408,7 +1397,6 @@ static const struct ctl_table sysctl_subsys_table[] = {
> .extra1 = SYSCTL_NEG_ONE,
> .extra2 = SYSCTL_ONE,
> },
> -#endif
> {
> .procname = "ngroups_max",
> .data = (void *)&ngroups_max,
>
> base-commit: 8d75c338f0bcecaa6c9af67f86c176b67b6acf3e
> --
> 2.52.0
>
>
This looks very nice, but now that you are there, I would propose an
additional change:
1. I would move the proc_do_static_key function and the definition of
the sysctl_subsys_table into the first CONFIG_SYSCTL definition
section; right after proc_do_large_bitmap
2. Doing one means that there is only one #ifdef CONFIG_SYSCTL
3. Add a proc_do_static_key stub to the #else section; something like
this:
int proc_do_static_key(const struct ctl_table *table, int dir,
void *buffer, size_t *lenp, loff_t *ppos)
{
return -ENOSYS;
}
I'll wont add these for this release; will queue them for the next one.
Best
Joel
Attachment:
signature.asc
Description: PGP signature