On 30/06/26 13:56, Waiman Long wrote:
>
> On 6/30/26 10:01 AM, Juri Lelli wrote:
> > Hi Waiman,
> >
> > On 29/06/26 23:33, Waiman Long wrote:
> > > The nr_deadline_tasks variable in the cpuset structure was introduced by
> > > commit 6c24849f5515 ("sched/cpuset: Keep track of SCHED_DEADLINE task
> > > in cpusets"). It is reported by sashiko [1] that nr_deadline_tasks
> > > can currently be modified by inc_dl_tasks_cs() under rq->lock and
> > > by cpuset_attach() under cpuset_mutex. So if both updates happen
> > > simultaneously, the nr_deadline_tasks variable can be corrupted leading
> > > to incorrect operations down the road.
> > >
> > > Fix that by changing its type to atomic_t so that nr_deadline_tasks are
> > > always atomically updated.
> > >
> > > [1]
> > > https://sashiko.dev/#/patchset/20260626181923.133658-1-longman%40redhat.comk
> > >
> > > Fixes: 6c24849f5515 ("sched/cpuset: Keep track of SCHED_DEADLINE task in
> > > cpusets")
> > > Signed-off-by: Waiman Long <[email protected]>
> > > ---
> > Looks like Sashiko is yet not completely happy with this:
> >
> > https://sashiko.dev/#/patchset/20260630033344.352702-1-longman%40redhat.com
> >
> > I actually wondered the same and couldn't convince myself we don't
> > actually have that problem with the window between sched_setscheduler()
> > and cpuset_attach(). If issue is confirmed, not sure if wait_attach_
> > done_lock() could help here as well? It's kind of a big lock for the
> > scheduler, but maybe only affecting DEADLINE tasks and if migrations
> > are ongoing.
>
> Yes, I am aware of that. This patch can only partially close the race
> window. It doesn't completely eliminate it.
>
> My current thought is for inc_dl_tasks_cs() to check if the in_progress flag
> is set. If so, it sets another flag for cpuset_attach() to double check the
> DL data for consistency. It will be a rather complicated solution in order
> to eliminate the race window. So I am postponing it to a later time when I
> have more free time to think about it.
Ah yes of course, makes sense.
Thanks!
Juri