Re: [PATCH v2 0/4] sysctl: Disallow partial updates of miss-formatted sysctl vectors
From: Joel Granados
Date: Mon Aug 17 2026 - 09:31:08 EST
On Fri, Aug 14, 2026 at 12:36:02PM -0700, Andrew Morton wrote:
> On Fri, 14 Aug 2026 12:41:11 +0200 Joel Granados <joel.granados@xxxxxxxxxx> wrote:
>
> > What?
> > =====
> >
> > Stage table->data when writing INT & ULONG ctl_tables. Commit staged
> > data to kernel variable only when all the conversions have succeeded.
> > This is applicable only to variables that represent a vector; paths
> > pertaining to scalers are left unchanged. Notice that partial updates
>
> "scalars"
Will change in the cover letter (If/when I send the next version). It
wont actually show up in upstream as this is just in the cover letter.
>
> > can still happen if less than the size of the vector are passed and
> > correctly formatted.
> >
> > This is the behavior we are protecting against:
> >
> > # echo "4 4 1 7" > /proc/sys/kernel/printk
> > # echo "1 x" > /proc/sys/kernel/printk
> > -bash: echo: write error: Invalid argument
> > # cat /proc/sys/kernel/printk
> > 1 4 1 7 <- the write failed, the first element changed anyway
>
> I like the change.
>
> > Why?
> > ====
> > Allowing a partial change to a vector after returning from an erroneous
> > proc_handler is just plain wrong. This should be handled within sysctl
> > to avoid users having to do it for themselves [1].
> >
> > Behavioral Changes
> > ==================
> > 1. A failed write will not update the vector
> > 2. Vector writes can now fail with -ENOMEM
>
> Yeah, this improves Linux.
>
> > Testing
> > =======
> > This went through regular sysctl kunit and self test. Also is posted to
> > 0-day.
> >
> > I always find it difficult to know who wants to receive this. Please let
> > me know if you want to be removed from the Cc/To.
>
> Sashiko said one thing:
> https://sashiko.dev/#/patchset/20260814-lklm-partial_ctlvec-v2-0-9df50d26e477@xxxxxxxxxx
The tests that keep on giving :).
I'm already working on a replacement for the sysctl selftests and prefer
to leave these as they are and address them in the new version if they
persist.
Thx for the feedback
Best
Joel
Attachment:
signature.asc
Description: PGP signature