summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorfangqiurong <fangqiurong@kylinos.cn>2026-08-14 11:26:23 +0800
committerTejun Heo <tj@kernel.org>2026-08-14 09:17:01 -1000
commit03506edca637a8465dba9f635c50e9884fbcaf4e (patch)
treef1506d584dcf2f494f96c06de522696c9192bec5 /kernel
parent1d0a73dd0c4f5a904ece163fdd24c7e03de0fb1b (diff)
sched_ext: Fix exit_task leak on fork failure during enable
scx_fork() initializes tasks when scx_init_task_enabled is set, but scx_cancel_fork() only exits them when scx_enabled() is true. A fork that fails in the enable window (between releasing scx_fork_rwsem and setting __scx_enabled) runs ops.init_task() but never ops.exit_task(). Gate scx_cancel_fork() on scx_init_task_enabled. Fixes: 4269c603cc26 ("sched_ext: Enable scx_ops_init_task() separately") Cc: stable@vger.kernel.org # v6.12+ Signed-off-by: fangqiurong <fangqiurong@kylinos.cn> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/ext/ext.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/sched/ext/ext.c b/kernel/sched/ext/ext.c
index 61b156d7fc4b..2adf2bde0cb1 100644
--- a/kernel/sched/ext/ext.c
+++ b/kernel/sched/ext/ext.c
@@ -4163,7 +4163,7 @@ void scx_post_fork(struct task_struct *p)
void scx_cancel_fork(struct task_struct *p)
{
- if (scx_enabled()) {
+ if (scx_init_task_enabled) {
struct rq *rq;
struct rq_flags rf;