All of lore.kernel.org
 help / color / mirror / Atom feed
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 --]

      parent reply	other threads:[~2026-11-07 21:27 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-28 16:34 [RFC PATCH 00/39] sysctl: replace overloaded extra pointers with typed bounds and context 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-11-04  5:46   ` kernel test robot
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-11-04  5:17   ` kernel test robot
2026-11-04  5:45   ` kernel test robot
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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.