Re: [PATCH 0/2] sched: Fix SCHED_FLAG_KEEP_PARAMS side effects

From: Peter Zijlstra

Date: Thu Jul 30 2026 - 06:22:41 EST


On Thu, Jul 30, 2026 at 11:32:24AM +0200, Peter Zijlstra wrote:
> On Thu, Jul 30, 2026 at 07:50:09AM +0200, Andrea Righi wrote:
> > SCHED_FLAG_KEEP_PARAMS allows sched_setattr() to update generic task
> > attributes while retaining the task's existing scheduling parameters and
> > class.
>
> Well, KEEP_PARAMS is only sensible when the policy is unchanged, but
> that isn't in fact enforced.
>
> Do we want something like so to start with?
>
> ---
> diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c
> index b215b0ead9a6..48094923a755 100644
> --- a/kernel/sched/syscalls.c
> +++ b/kernel/sched/syscalls.c
> @@ -979,8 +979,11 @@ SYSCALL_DEFINE3(sched_setattr, pid_t, pid, struct sched_attr __user *, uattr,
> if (!p)
> return -ESRCH;
>
> - if (attr.sched_flags & SCHED_FLAG_KEEP_PARAMS)
> + if (attr.sched_flags & SCHED_FLAG_KEEP_PARAMS) {
> + if (attr.sched_policy != p->policy)

Ah, it also needs to deal with SETPARAM_POLICY, so something like:

attr.sched_policy != SETPARAM_POLICY && attr.sched_policy != p->policy

I suppose.

> + return -EINVAL;
> get_params(p, &attr, 0);
> + }
>
> return sched_setattr(p, &attr);
> }