[PATCH] sched_ext: Fix exit_task leak on fork failure during enable

Qiurong Fang posted 1 patch 1 week, 4 days ago
kernel/sched/ext/ext.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] sched_ext: Fix exit_task leak on fork failure during enable
Posted by Qiurong Fang 1 week, 4 days ago
From: fangqiurong <fangqiurong@kylinos.cn>

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.

Signed-off-by: fangqiurong <fangqiurong@kylinos.cn>
---
 kernel/sched/ext/ext.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/ext/ext.c b/kernel/sched/ext/ext.c
index 29967bb130c5..334472b91cd2 100644
--- a/kernel/sched/ext/ext.c
+++ b/kernel/sched/ext/ext.c
@@ -4177,7 +4177,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;
 
-- 
2.43.0
Re: [PATCH] sched_ext: Fix exit_task leak on fork failure during enable
Posted by Tejun Heo 1 week, 3 days ago
Applied to sched_ext/for-7.3 with the following tags added:

    Fixes: 4269c603cc26 ("sched_ext: Enable scx_ops_init_task() separately")
    Cc: stable@vger.kernel.org # v6.12+

Thanks.

--
tejun