From: Joel Granados <joel.granados@kernel.org>
To: wen.yang@linux.dev
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH 00/39] sysctl: replace overloaded extra pointers with typed bounds and context
Date: Sat, 7 Nov 2026 22:26:56 +0100 [thread overview]
Message-ID: <au-OY8br_l6vZ30X@hobbes> (raw)
In-Reply-To: <cover.1793204511.git.wen.yang@linux.dev>
[-- Attachment #1: Type: text/plain, Size: 11824 bytes --]
On Thu, Oct 29, 2026 at 12:34:39AM +0800, wen.yang@linux.dev wrote:
> From: Wen Yang <wen.yang@linux.dev>
>
> struct ctl_table describes an entry with data, maxlen and, until this
> series, two untyped misc pointers in extra1 and extra2. Those two pointers
> have accumulated at least seven unrelated jobs: a fixed bound, a bound read
> through a pointer on every call, an object or namespace pointer, a small
> integer cookie encoded into the pointer, a lock signal, NULL standing for
> "no bound", and a value the core itself casts to unsigned int while
> validating a u8 range. Nothing in the entry says which job applies, so
> readers infer it from the handler, and the core gets it wrong where it
> treats extra1 as an unsigned int.
>
<... snip ...>
> sysctl: convert core table bounds to numeric values
> sysctl: store architecture sysctl bounds by value
> sysctl: store crypto sysctl bounds by value
> sysctl: store device sysctl bounds by value
> sysctl: store filesystem sysctl bounds by value
> sysctl: store message-queue sysctl bounds by value
> sysctl: store kernel sysctl bounds by value
> sysctl: store memory-management sysctl bounds by value
> sysctl: store IPv6 scalar sysctl bounds by value
> sysctl: store netfilter scalar sysctl bounds by value
> sysctl: store RPC sysctl bounds by value
> sysctl: store remaining network sysctl bounds by value
> sysctl: store security sysctl bounds by value
> io_uring: store its sysctl bounds by value
> sysctl: refresh dynamic scheduler and PID bounds per call
> sysctl: refresh device-dependent bounds per call
> sysctl: refresh namespace IPC bounds per call
> yama: preserve scope locking with numeric sysctl bounds
> net: refresh core sysctl limits without bound pointers
> sctp: resolve numeric ranges from the current namespace
> rds: preserve live reconnect limits with numeric bounds
> ipv4: preserve live and vector bounds with numeric sysctls
> net: refresh fragment and remaining dynamic sysctl bounds
> neighbour: derive sysctl ownership independently of bounds
> net: resolve sysctl owners from their backing data
> ipvs: derive sysctl ownership from numeric storage
> sysctl: remove obsolete nr_open bound variables
> ipv6: move address sysctl context to priv
> ipv4: move device sysctl context to priv
> netfilter: move logger sysctl context to priv
> parport: move device sysctl context to priv
> net: move namespace sysctl context to priv
> arm64: move vector-length sysctl context to priv
> sysctl: remove the extra pointers and the compatibility bounds read
>
> arch/arm64/kernel/armv8_deprecated.c | 4 +-
> arch/arm64/kernel/fpsimd.c | 13 +-
> arch/arm64/kernel/process.c | 4 +-
> arch/powerpc/platforms/pseries/mobility.c | 3 +
> arch/riscv/kernel/process.c | 4 +-
> arch/s390/appldata/appldata_base.c | 12 +-
> arch/s390/kernel/hiperdispatch.c | 4 +-
> arch/s390/kernel/topology.c | 8 +-
> arch/sh/kernel/vsyscall/vsyscall.c | 4 +-
> arch/x86/entry/vdso/vdso32-setup.c | 4 +-
> arch/x86/kernel/cpu/bus_lock.c | 4 +-
> arch/x86/kernel/setup.c | 3 +
> crypto/af_alg.c | 4 +-
> drivers/base/firmware_loader/fallback_table.c | 8 +-
> drivers/base/power/main.c | 21 +-
> drivers/gpu/drm/i915/i915_perf.c | 19 +-
> drivers/gpu/drm/xe/xe_observation.c | 4 +-
> drivers/hv/hv_common.c | 4 +-
> drivers/infiniband/core/iwcm.c | 5 +-
> drivers/infiniband/core/ucma.c | 5 +-
> drivers/net/vrf.c | 20 +-
> drivers/parport/procfs.c | 51 +-
> drivers/perf/arm_pmuv3.c | 4 +-
> drivers/perf/riscv_pmu_sbi.c | 4 +-
> drivers/scsi/scsi_sysctl.c | 5 +-
> drivers/tty/tty_io.c | 4 +-
> drivers/xen/balloon.c | 4 +-
> fs/aio.c | 5 +
> fs/coredump.c | 15 +-
> fs/dcache.c | 13 +-
> fs/devpts/inode.c | 10 +-
> fs/drop_caches.c | 4 +-
> fs/eventpoll.c | 7 +-
> fs/exec.c | 10 +-
> fs/file.c | 5 -
> fs/file_table.c | 12 +-
> fs/fs-writeback.c | 4 +-
> fs/fuse/sysctl.c | 24 +-
> fs/lockd/svc.c | 18 +-
> fs/namei.c | 16 +-
> fs/namespace.c | 3 +-
> fs/nfs/nfs4sysctl.c | 6 +-
> fs/notify/fanotify/fanotify_user.c | 17 +-
> fs/notify/inotify/inotify_user.c | 14 +-
> fs/pipe.c | 11 +-
> fs/proc/proc_sysctl.c | 62 +-
> fs/sysctls.c | 8 +-
> fs/verity/init.c | 4 +-
> fs/xfs/xfs_sysctl.c | 59 +-
> include/linux/file.h | 2 -
> include/linux/sysctl.h | 72 +-
> include/net/neighbour.h | 3 +
> io_uring/io_uring.c | 4 +-
> ipc/ipc_sysctl.c | 53 +-
> ipc/mq_sysctl.c | 22 +-
> kernel/bpf/syscall.c | 8 +-
> kernel/delayacct.c | 4 +-
> kernel/events/callchain.c | 9 +-
> kernel/events/core.c | 7 +-
> kernel/fork.c | 8 +-
> kernel/hung_task.c | 30 +-
> kernel/kexec_core.c | 4 +-
> kernel/kprobes.c | 4 +-
> kernel/kstack_erase.c | 4 +-
> kernel/module/main.c | 4 +-
> kernel/panic.c | 13 +-
> kernel/pid.c | 16 +-
> kernel/pid_namespace.c | 6 +-
> kernel/pid_sysctl.h | 6 +-
> kernel/printk/sysctl.c | 22 +-
> kernel/rcu/tree_stall.h | 9 +-
> kernel/sched/autogroup.c | 4 +-
> kernel/sched/core.c | 8 +-
> kernel/sched/deadline.c | 29 +-
> kernel/sched/fair.c | 6 +-
> kernel/sched/rt.c | 13 +-
> kernel/sched/topology.c | 4 +-
> kernel/sys.c | 8 +-
> kernel/sysctl-test.c | 1357 +++++++++++++++--
> kernel/sysctl.c | 43 +-
> kernel/time/jiffies.c | 3 +-
> kernel/time/timer.c | 4 +-
> kernel/ucount.c | 7 +-
> kernel/watchdog.c | 35 +-
> lib/test_sysctl.c | 135 +-
> mm/compaction.c | 19 +-
> mm/filemap.c | 4 +-
> mm/memory-failure.c | 16 +-
> mm/mmap.c | 28 +-
> mm/nommu.c | 4 +-
> mm/oom_kill.c | 4 +-
> mm/page-writeback.c | 25 +-
> mm/page_alloc.c | 28 +-
> mm/swap_state.c | 5 +-
> mm/userfaultfd.c | 4 +-
> mm/util.c | 10 +-
> mm/vmscan.c | 8 +-
> mm/vmstat.c | 4 +-
> net/core/neighbour.c | 101 +-
> net/core/sysctl_net_core.c | 129 +-
> net/ieee802154/6lowpan/reassembly.c | 30 +-
> net/ipv4/devinet.c | 53 +-
> net/ipv4/ip_fragment.c | 34 +-
> net/ipv4/route.c | 8 +-
> net/ipv4/sysctl_net_ipv4.c | 408 +++--
> net/ipv6/addrconf.c | 163 +-
> net/ipv6/icmp.c | 17 +-
> net/ipv6/ndisc.c | 3 +-
> net/ipv6/netfilter/nf_conntrack_reasm.c | 30 +-
> net/ipv6/reassembly.c | 30 +-
> net/ipv6/route.c | 11 +-
> net/ipv6/sysctl_net_ipv6.c | 53 +-
> net/mpls/af_mpls.c | 58 +-
> net/mptcp/ctrl.c | 29 +-
> net/netfilter/ipvs/ip_vs_ctl.c | 157 +-
> net/netfilter/nf_conntrack_standalone.c | 45 +-
> net/netfilter/nf_hooks_lwtunnel.c | 4 +-
> net/netfilter/nf_log.c | 67 +-
> net/phonet/sysctl.c | 6 +-
> net/rds/ib_sysctl.c | 23 +-
> net/rds/sysctl.c | 32 +-
> net/rds/tcp.c | 11 +-
> net/rxrpc/sysctl.c | 51 +-
> net/sctp/sysctl.c | 148 +-
> net/smc/smc_sysctl.c | 42 +-
> net/sunrpc/xprtrdma/svc_rdma.c | 39 +-
> net/sunrpc/xprtrdma/transport.c | 27 +-
> net/sunrpc/xprtsock.c | 26 +-
> net/tipc/sysctl.c | 18 +-
> net/vmw_vsock/af_vsock.c | 4 +-
> net/x25/sysctl_net_x25.c | 23 +-
> security/keys/sysctl.c | 25 +-
> security/loadpin/loadpin.c | 4 +-
> security/yama/yama_lsm.c | 10 +-
> 134 files changed, 3075 insertions(+), 1525 deletions(-)
>
> --
> 2.25.1
>
Do you need to broaden the To: and CC?
For starters, I noticed that you missed Kees. Additionally, there are
the maintainers for the files and subsystems involved that are not
included in the communication.
I understand that it is difficult to know who to include in the To and
CC, but I would at least add the mailing lists of the various
subsystems (and at least one of its maintainers).
Is there a specific plan regarding upstreaming all this?
I'm assuming that you made extra{1,2} coexist with min,max to make the
review easier. Right? You expect the whole series to go upstream in one
go. right?
There are some ctl_tables that you missed.
I see that the kernel test robot has found a few cases where you
missed removing the extra{1,2} variables. Are these false positives?
It is helpful to have a script that makes sure that every case is
addressed in the series. Could you use sed and/or coccinelle to
"prove" that all the call sites are handled?
Best
Joel
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
prev parent reply other threads:[~2026-11-07 21:27 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-28 16:34 wen.yang
2026-10-28 16:34 ` [RFC PATCH 01/39] " wen.yang
2026-10-28 21:09 ` David Laight
2026-11-07 17:43 ` Joel Granados
2026-10-28 16:34 ` [RFC PATCH 02/39] test_sysctl: convert bounds to numeric values wen.yang
2026-10-28 16:34 ` [RFC PATCH 03/39] sysctl: add KUnit coverage for numeric bounds and handlers wen.yang
2026-10-28 16:34 ` [RFC PATCH 04/39] sysctl: cover runtime ranges and context lifecycles in KUnit wen.yang
2026-10-28 16:34 ` [RFC PATCH 05/39] sysctl: cover priv in KUnit and the debug test module wen.yang
2026-10-28 16:34 ` [RFC PATCH 06/39] sysctl: convert core table bounds to numeric values wen.yang
2026-10-28 16:34 ` [RFC PATCH 07/39] sysctl: store architecture sysctl bounds by value wen.yang
2026-10-28 16:34 ` [RFC PATCH 08/39] sysctl: store crypto " wen.yang
2026-10-28 16:34 ` [RFC PATCH 09/39] sysctl: store device " wen.yang
2026-10-28 16:34 ` [RFC PATCH 10/39] sysctl: store filesystem " wen.yang
2026-10-28 16:34 ` [RFC PATCH 11/39] sysctl: store message-queue " wen.yang
2026-10-28 16:34 ` [RFC PATCH 12/39] sysctl: store kernel " wen.yang
2026-10-28 16:34 ` [RFC PATCH 13/39] sysctl: store memory-management " wen.yang
2026-10-28 16:34 ` [RFC PATCH 14/39] sysctl: store IPv6 scalar " wen.yang
2026-10-28 16:34 ` [RFC PATCH 15/39] sysctl: store netfilter " wen.yang
2026-10-28 16:34 ` [RFC PATCH 16/39] sysctl: store RPC " wen.yang
2026-10-28 16:34 ` [RFC PATCH 17/39] sysctl: store remaining network " wen.yang
2026-10-28 16:34 ` [RFC PATCH 18/39] sysctl: store security " wen.yang
2026-10-28 16:34 ` [RFC PATCH 19/39] io_uring: store its " wen.yang
2026-10-28 16:34 ` [RFC PATCH 20/39] sysctl: refresh dynamic scheduler and PID bounds per call wen.yang
2026-10-28 16:35 ` [RFC PATCH 21/39] sysctl: refresh device-dependent " wen.yang
2026-10-28 16:35 ` [RFC PATCH 22/39] sysctl: refresh namespace IPC " wen.yang
2026-10-28 16:35 ` [RFC PATCH 23/39] yama: preserve scope locking with numeric sysctl bounds wen.yang
2026-10-28 16:35 ` [RFC PATCH 24/39] net: refresh core sysctl limits without bound pointers wen.yang
2026-10-28 16:35 ` [RFC PATCH 25/39] sctp: resolve numeric ranges from the current namespace wen.yang
2026-10-28 16:35 ` [RFC PATCH 26/39] rds: preserve live reconnect limits with numeric bounds wen.yang
2026-10-28 16:35 ` [RFC PATCH 27/39] ipv4: preserve live and vector bounds with numeric sysctls wen.yang
2026-10-28 16:35 ` [RFC PATCH 28/39] net: refresh fragment and remaining dynamic sysctl bounds wen.yang
2026-10-28 16:35 ` [RFC PATCH 29/39] neighbour: derive sysctl ownership independently of bounds wen.yang
2026-10-28 16:35 ` [RFC PATCH 30/39] net: resolve sysctl owners from their backing data wen.yang
2026-10-28 16:35 ` [RFC PATCH 31/39] ipvs: derive sysctl ownership from numeric storage wen.yang
2026-10-28 16:35 ` [RFC PATCH 32/39] sysctl: remove obsolete nr_open bound variables wen.yang
2026-10-28 16:35 ` [RFC PATCH 33/39] ipv6: move address sysctl context to priv wen.yang
2026-10-28 16:35 ` [RFC PATCH 34/39] ipv4: move device " wen.yang
2026-10-28 16:35 ` [RFC PATCH 35/39] netfilter: move logger " wen.yang
2026-10-28 16:35 ` [RFC PATCH 36/39] parport: move device " wen.yang
2026-10-28 16:35 ` [RFC PATCH 37/39] net: move namespace " wen.yang
2026-10-28 16:35 ` [RFC PATCH 38/39] arm64: move vector-length " wen.yang
2026-10-28 16:35 ` [RFC PATCH 39/39] sysctl: remove the extra pointers and the compatibility bounds read wen.yang
2026-10-29 10:58 ` [RFC PATCH 00/39] sysctl: replace overloaded extra pointers with typed bounds and context David Laight
2026-11-02 15:40 ` Wen Yang
2026-11-02 16:54 ` David Laight
2026-11-04 18:32 ` Wen Yang
2026-11-07 15:27 ` Joel Granados
2026-11-07 17:05 ` David Laight
2026-11-07 21:26 ` Joel Granados [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=au-OY8br_l6vZ30X@hobbes \
--to=joel.granados@kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=wen.yang@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®