Re: [PATCH v3] mm/page_alloc: only update lowmem_reserve_ratio on sysctl write

Joel Granados <[email protected]> Tue, 4 Aug 2026 14:20:22 +0200
Newsgroups gmane.linux.kernel,gmane.linux.kernel.mm
Message-ID <k53aljpl7v7naqs5fj4i4po6tu4grkzu5nui4h37orwt6v7bqo@sw4frf2ystmi>
On Mon, Aug 03, 2026 at 10:27:46AM +0200, Vlastimil Babka (SUSE) wrote:
> +Cc: sysctl maintainers
> 
> On 8/1/26 20:44, Andrew Morton wrote:
> > On Sat,  1 Aug 2026 23:11:25 +0800 Jianlin Shi <[email protected]> wrote:
> > 
> >> lowmem_reserve_ratio_sysctl_handler() ignores the return value of
> >> proc_dointvec_minmax() and always calls setup_per_zone_lowmem_reserve(),
> >> even for read operations.
> >> 
> >> Fix two issues:
> >> 
> >> 1. Propagate errors from proc_dointvec_minmax() instead of always
> >>    returning success.  For example, writing non-integer garbage to the
> >>    sysctl now returns an error instead of silently succeeding with
> >>    unchanged values.
> > 
> > AI review suggest that this caused a new problem:
> > 
> > 	https://sashiko.dev/#/patchset/[email protected]
> > 
> > Not sure what to do here.  Perhaps pass proc_dointvec_minmax() a
> > temporary then copy that into sysctl_lowmem_reserve_ratio if all
> > proc_dointvec_minmax() returns "OK".
> 
> Seeing the v4 [1] it seems easier to keep the current fixup code until
> proc_dointvec_minmax() is fixed.

1. V3 -vs- V4:
  I would prefer V4 as it actually prevents the partial write of the
  vector in case of an error & returns that error back to user space.
  Whereas V3 returns the error back to user space but keeps the partial
  write.

That patterns of using a temp ctltable entry is seldom used but not
unheard of.

> 
> > But really this is a flaw in proc_dointvec_minmax() isn't it?  It
> > shouldn't update the table data until all the data has been validated.
> 
> I agree. What do the maintainers think?

I agree. The arrays being changed are not too big so we can easily have
a staging variable that that gets written when all validations are done.
The only "con" that I see for this solution is for when these
proc_handlers get used with temp variables; in these cases we will be
staging an already staging variable.

I have added this to my Todos

Best

-- 

Joel
signature.asc (application/pgp-signature, 659 B)
-----BEGIN PGP SIGNATURE-----

iQGzBAABCgAdFiEErkcJVyXmMSXOyyeQupfNUreWQU8FAmpx2QUACgkQupfNUreW
QU8Qkwv/fPz+ltet7pLkvz28K9W7ZeeQ1dzKM4/bQdIYZxqlMljMlarMc8WAlm1R
7KDlkxnxe8BT2+RuQJLihpOG2lWYpyRuhBiGN/YtiM+1NJEkTtqu1gYL7C218UK6
MwRLPsaejC4WK7IqZlvC1xjTuexaNUe3RcLVwDmxNc+I+5LSjcuku/aPb0/o6i9u
MXgvxweMRhiJ3oZ0WhN+VZayLAf4Nxz9+1qV/24mU/khekmBLficWy+KbBbrKRrp
lUqNObbmUseNJPij/Vx9+SkZoq30id5jb1bOoHcoI0KmO7VbTSLoDuJxXjjy/Lnb
+yBZ5fdevWFEFdYKsvfvYMyfBMo/fcnHkuXihKbn9FG/zKRaWssr/3H8Yi4SODyl
Wk5Bpr8TFuhY7RbzJQ/rb4QgjmdYo7uaNeHz6pieddZBL9Cqj0K955Pc22Gwza+z
Jn2CgWwRkvVQnPKrbWiUYubcyf6RdN6nLTeiIMkC7wVwVrjbh/pwfUzeOUrtM4JY
rH+bzQjU
=stmO
-----END PGP SIGNATURE-----