mirror of https://lore.kernel.org/lkml/
 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: 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®