[Devel] [PATCH vz10] sched: enforce the 0..1 bound on sched_cpulimit_scale_cpufreq

Konstantin Khorenko khorenko at virtuozzo.com
Wed Aug 26 19:48:52 MSK 2026


a kind ping

--
Best regards,

Konstantin Khorenko,
Virtuozzo Linux Kernel Team

On 8/5/26 15:45, Konstantin Khorenko wrote:
> The sched_cpulimit_scale_cpufreq sysctl was registered with
>   .extra1 = SYSCTL_ZERO
>   .extra2 = SYSCTL_ONE
> but with .proc_handler = proc_dointvec.
> 
> proc_dointvec() ignores extra1/extra2, so the intended [0, 1] clamp was
> never applied. sysctl_sched_cpulimit_scale_cpufreq is also unsigned int,
> so proc_dointvec() is the wrong signedness for it in the first place.
> 
> Use proc_douintvec_minmax() so the already-declared bounds are honoured
> and an out-of-range write is rejected.
> 
> Fixes: 4e99efb641da0 ("sched: Port CONFIG_CFS_CPULIMIT feature")
> Feature: sched: ability to limit number of CPUs available to a CT
> https://virtuozzo.atlassian.net/browse/VSTOR-137234
> Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
> ---
>  kernel/sched/core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/kernel/sched/core.c b/kernel/sched/core.c
> index d5b4d8c97a0c7..7580067e7f44a 100644
> --- a/kernel/sched/core.c
> +++ b/kernel/sched/core.c
> @@ -4753,7 +4753,7 @@ static struct ctl_table sched_core_sysctls[] = {
>  		.data		= &sysctl_sched_cpulimit_scale_cpufreq,
>  		.maxlen		= sizeof(unsigned int),
>  		.mode		= 0644,
> -		.proc_handler	= proc_dointvec,
> +		.proc_handler	= proc_douintvec_minmax,
>  		.extra1		= SYSCTL_ZERO,
>  		.extra2		= SYSCTL_ONE,
>  	},



More information about the Devel mailing list