All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Gladkov <legion@kernel.org>
To: Joel Granados <joel.granados@kernel.org>
Cc: "Ondrej Mosnáček" <omosnacek@gmail.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Kees Cook" <kees@kernel.org>,
	"Ryan Roberts" <ryan.roberts@arm.com>,
	"Serge Hallyn" <serge@hallyn.com>,
	"Eric W . Biederman" <ebiederm@xmission.com>,
	LKML <linux-kernel@vger.kernel.org>,
	linux-fsdevel@vger.kernel.org
Subject: [PATCH v3 0/5] sysctl: add typed field descriptors
Date: Sat, 26 Sep 2026 18:22:07 +0200	[thread overview]
Message-ID: <cover.1790439358.git.legion@kernel.org> (raw)
In-Reply-To: <cover.1789987960.git.legion@kernel.org>

Hi,

Some sysctl users copy an otherwise static ctl_table for each namespace or
device, then replace data and limit pointers before registration. Besides
the per-instance allocation, these fixups often depend on table indices:
reordering an entry without updating the fixup can silently bind it to the
wrong data or limits.

This series lets such users describe a table once with static, read-only
sysctl_field entries. Each field names a data type and an offset into an
object selected by a sysctl_context at registration time. The offset
helpers check the member type at build time. Limits and custom handlers
remain optional properties of a field; the field type does not encode a
choice of handler or whether limits are present. A subsystem that needs
more than a namespace can embed sysctl_context in its own registration
context.

The sysctl core keeps the context with the table header and materializes
a ctl_table entry when an existing handler, permission check or BPF hook
needs one. Legacy ctl_table registrations retain their own path, and
subsystems can convert tables independently. The IPC, mqueue and ucount
conversions here remove table copies without changing their backing data.

Changes since v2:

- Drop sysctl_uint_vals, as requested by Joel. Existing limit constants
  suffice for these conversions.
- Drop the *_MINMAX field types. A field's type now describes its data,
  while optional min/max pointers supply bounds to the selected handler.
- Keep __register_sysctl_table() and __register_sysctl_fields() as separate
  registration paths, sharing only allocation and tree insertion helpers.
- Address the sashiko findings: avoid calling mode_fn under sysctl_lock,
  validate the effective maxlen against the context object, and reject
  NO_DATA fields paired with standard handlers that require data.

This is the first part of the conversion. Network sysctls and other
subsystem-specific users will follow in separate series for review by
their maintainers.


Alexey Gladkov (5):
  proc: sysctl: address table entries by index
  sysctl: add typed field descriptors
  sysctl: ipc: use typed fields for IPC namespace sysctls
  sysctl: mq: use typed fields for IPC namespace sysctls
  sysctl: use typed fields for ucount limits

 fs/proc/inode.c        |   2 +-
 fs/proc/internal.h     |   2 +-
 fs/proc/proc_sysctl.c  | 681 +++++++++++++++++++++++++++++------------
 include/linux/sysctl.h | 138 ++++++++-
 ipc/ipc_sysctl.c       | 189 +++++-------
 ipc/mq_sysctl.c        | 104 +++----
 kernel/ucount.c        |  64 ++--
 7 files changed, 772 insertions(+), 408 deletions(-)


base-commit: 587858367581b9c55c3690f4e63382ad622719d4
-- 
2.55.0


  parent reply	other threads:[~2026-09-26 16:23 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-21 10:54 [PATCH v2 0/6] sysctl: add typed field descriptors Alexey Gladkov
2026-09-21 10:54 ` [PATCH v2 1/6] proc: sysctl: address table entries by index Alexey Gladkov
2026-09-21 10:54 ` [PATCH v2 2/6] sysctl: add unsigned int limit constants Alexey Gladkov
2026-09-24 13:29   ` Joel Granados
2026-09-24 15:08     ` Alexey Gladkov
2026-09-21 10:54 ` [PATCH v2 3/6] sysctl: add typed field descriptors Alexey Gladkov
2026-09-24 13:29   ` Joel Granados
2026-09-24 15:48     ` Alexey Gladkov
2026-09-21 10:54 ` [PATCH v2 4/6] sysctl: ipc: use typed fields for IPC namespace sysctls Alexey Gladkov
2026-09-21 10:54 ` [PATCH v2 5/6] sysctl: mq: " Alexey Gladkov
2026-09-21 10:54 ` [PATCH v2 6/6] sysctl: use typed fields for ucount limits Alexey Gladkov
2026-09-24 13:29 ` [PATCH v2 0/6] sysctl: add typed field descriptors Joel Granados
2026-09-24 14:46   ` Alexey Gladkov
2026-09-24 14:38 ` Joel Granados
2026-09-26 16:22 ` Alexey Gladkov [this message]
2026-09-26 16:22   ` [PATCH v3 1/5] proc: sysctl: address table entries by index Alexey Gladkov
2026-09-26 16:22   ` [PATCH v3 2/5] sysctl: add typed field descriptors Alexey Gladkov
2026-09-26 16:22   ` [PATCH v3 3/5] sysctl: ipc: use typed fields for IPC namespace sysctls Alexey Gladkov
2026-09-26 16:22   ` [PATCH v3 4/5] sysctl: mq: " Alexey Gladkov
2026-09-26 16:22   ` [PATCH v3 5/5] sysctl: use typed fields for ucount limits Alexey Gladkov
2026-10-12 13:43   ` [PATCH v3 0/5] sysctl: add typed field descriptors Alexey Gladkov

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=cover.1790439358.git.legion@kernel.org \
    --to=legion@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=ebiederm@xmission.com \
    --cc=joel.granados@kernel.org \
    --cc=kees@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=omosnacek@gmail.com \
    --cc=ryan.roberts@arm.com \
    --cc=serge@hallyn.com \
    /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.