Re: [PATCH 1/2] sched/psi: Create the psimon kthread outside of cgroup_mutex

From: Suren Baghdasaryan

Date: Mon Jul 13 2026 - 11:35:59 EST


On Mon, Jul 13, 2026 at 6:48 AM Matt Fleming <matt@xxxxxxxxxxxxxxxx> wrote:
>
> On Sun, Jul 12, 2026 at 07:46:18AM -1000, Tejun Heo wrote:
> > a5b98009f16d ("sched/psi: fix race between file release and pressure write")
> > made pressure_write() hold cgroup_mutex across psi_trigger_create(), which
> > forks the psimon kthread for the first rtpoll trigger. As kthread creation
> > depends on the whole fork path, the commit inadvertently created a lot of
> > unwanted locking dependencies from cgroup_mutex.
> >
> > sched_ext got hit by one: its enable path blocks forks and then grabs
> > cgroup_mutex, so a pressure write racing a scheduler enable deadlocks, with
> > every other fork piling up behind.
> >
> > Fix it by splitting trigger creation so that the worker is forked with
> > cgroup_mutex dropped and the kernfs active reference left broken. The latter
> > matters because rmdir and cgroup.pressure writes drain active references
> > under cgroup_mutex. Publishing the trigger last keeps error reporting
> > synchronous and preserves the of->priv lifetime rules.
> >
> > The trigger registered in the first stage pins the group's rtpoll machinery
> > across the unlocked window, leaving only creation races to resolve. The
> > catch-up poll on installation covers scheduling attempts dropped while there
> > was no worker.
> >
> > v2: Retagged sched/psi (was cgroup).
> >
> > Fixes: a5b98009f16d ("sched/psi: fix race between file release and pressure write")
> > Cc: stable@xxxxxxxxxxxxxxx
> > Cc: Johannes Weiner <hannes@xxxxxxxxxxx>
> > Cc: Edward Adam Davis <eadavis@xxxxxx>
> > Cc: Chen Ridong <chenridong@xxxxxxxxxxxxxxx>
> > Reported-by: Matt Fleming <mfleming@xxxxxxxxxxxxxx>
> > Closes: https://lore.kernel.org/all/20260710100441.2653477-1-matt@xxxxxxxxxxxxxxxx/
> > Signed-off-by: Tejun Heo <tj@xxxxxxxxxx>
> > ---
> > include/linux/psi.h | 4 ++-
> > kernel/cgroup/cgroup.c | 23 +++++++++++++-
> > kernel/sched/psi.c | 69 ++++++++++++++++++++++++++++++++----------
> > 3 files changed, 78 insertions(+), 18 deletions(-)
>
> Tested-by: Matt Fleming <mfleming@xxxxxxxxxxxxxx>

Acked-by: Suren Baghdasaryan <surenb@xxxxxxxxxx>