Files
Centos-kernel-stream-9/kernel/sched
Waiman Long fe99498ed8 sched/psi: Create the psimon kthread outside of cgroup_mutex
JIRA: https://redhat.atlassian.net/browse/RHEL-232556
Conflicts:
  A context diff with the first kernel/sched/psi.c hunk due to missing
  upstream commit 44585f7bc0cb ("psi: fix "defined but not used"
  warnings when CONFIG_PROC_FS=n").

commit fadeedd7cfc5d73d33fa3d7ac54b9b27aabd09d2
Author: Tejun Heo <tj@kernel.org>
Date:   Sun, 12 Jul 2026 07:23:55 -1000

    sched/psi: Create the psimon kthread outside of cgroup_mutex

    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@vger.kernel.org
    Cc: Edward Adam Davis <eadavis@qq.com>
    Cc: Chen Ridong <chenridong@huaweicloud.com>
    Reported-by: Matt Fleming <mfleming@cloudflare.com>
    Closes: https://lore.kernel.org/all/20260710100441.2653477-1-matt@readmodwrite.com/
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Tested-by: Matt Fleming <mfleming@cloudflare.com>
    Acked-by: Suren Baghdasaryan <surenb@google.com>

Signed-off-by: Waiman Long <longman@redhat.com>
2026-08-06 11:14:10 -04:00
..