Re: [PATCH v3 4/6] sysctl: Warn when a clamped sysctl parameter is set out of range

From: Luis R. Rodriguez
Date: Thu Mar 08 2018 - 13:31:53 EST


On Thu, Mar 01, 2018 at 12:43:38PM -0500, Waiman Long wrote:
> Even with clamped sysctl parameters, it is still not that straight
> forward to figure out the exact range of those parameters. One may
> try to write extreme parameter values to see if they get clamped.
> To make it easier, a warning with the expected range will now be
> printed in the kernel ring buffer when a clamped sysctl parameter
> receives an out of range value.
>
> Signed-off-by: Waiman Long <longman@xxxxxxxxxx>
> ---
> include/linux/sysctl.h | 3 +++
> kernel/sysctl.c | 52 ++++++++++++++++++++++++++++++++++++++++++--------
> 2 files changed, 47 insertions(+), 8 deletions(-)
>
> diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
> index 448aa72..3db57af 100644
> --- a/include/linux/sysctl.h
> +++ b/include/linux/sysctl.h
> @@ -130,11 +130,14 @@ struct ctl_table
> * @CTL_FLAGS_CLAMP_RANGE: Set to indicate that the entry should be
> * flexibly clamped to min/max range in case the user provided
> * an incorrect value.
> + * @CTL_FLAGS_OOR_WARNED: Set to indicate that an out of range warning
> + * had been issued for that entry.
> *
> * At most 16 different flags will be allowed.
> */
> enum ctl_table_flags {
> CTL_FLAGS_CLAMP_RANGE = BIT(0),
> + CTL_FLAGS_OOR_WARNED = BIT(1),
> };

Ugh, no. Now I see why you had to set this flag later.

You are not using this flag to "warn" but rather for an internal
status checker if you have warned or not. Internal flags should
not be something the user sets. If we want a flag for warning
that's one thing. If we need a flag to keep tabs if we have
warned or not that needs to be kept separately and internally,
nothing the user has to do set or reset.

Luis