mirror of https://lore.kernel.org/lkml/
 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 v2 0/6] sysctl: add typed field descriptors
Date: Mon, 21 Sep 2026 12:54:47 +0200	[thread overview]
Message-ID: <cover.1789987960.git.legion@kernel.org> (raw)

Hi,

Some sysctl users allocate a private copy of an otherwise static ctl_table
for every namespace or device, then rewrite data and limit pointers before
registration.  Besides the per-instance allocation, these fixups are often
addressed by table index, so changing the table can silently associate an
entry with the wrong data or limits.

This series adds struct sysctl_field as an alternative descriptor for such
tables.  A field records the value type and an offset into an object
selected at registration time.  The type-specific offset helpers are small
wrappers around offsetof() and only add a compile-time check of the
referenced member type.  The sysctl core derives the handler, size, data
and limits, and builds a temporary ctl_table when invoking existing
handler, permission and BPF interfaces.

A struct sysctl_context identifies the object shared by the whole
registration and is copied into the table header.  Subsystems which need
more than a namespace can embed it as the first member of a larger context
and select the object to which field offsets apply.

Existing ctl_table users are unchanged, and subsystems can migrate one
table at a time.  Converted tables remain static and read-only instead of
being copied and patched for every instance.

Compared with the previous RFC [1], this drops the per-field accessor
functions and the macros which generated them.  The first two patches
prepare the sysctl core without changing its external behaviour.  The third
patch adds the new descriptor, followed by conversions of the IPC, mqueue
and ucount tables as small users of the interface.

This is only the first part of the conversion.  Network sysctls and the
other subsystem-specific users will be submitted as separate follow-up
series so they can be reviewed by their respective maintainers without
making this initial series excessively large.

[1] https://lore.kernel.org/all/cover.1787770053.git.legion@kernel.org/

Alexey Gladkov (6):
  proc: sysctl: address table entries by index
  sysctl: add unsigned int limit constants
  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  | 601 ++++++++++++++++++++++++++++++-----------
 include/linux/sysctl.h | 150 +++++++++-
 ipc/ipc_sysctl.c       | 188 ++++++-------
 ipc/mq_sysctl.c        | 104 +++----
 kernel/sysctl.c        |   3 +
 kernel/ucount.c        |  64 ++---
 8 files changed, 750 insertions(+), 364 deletions(-)


base-commit: 587858367581b9c55c3690f4e63382ad622719d4
-- 
2.55.0


             reply	other threads:[~2026-09-21 10:55 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-21 10:54 Alexey Gladkov [this message]
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-21 10:54 ` [PATCH v2 3/6] sysctl: add typed field descriptors 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

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.1789987960.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 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®