From 2f7e18f610068731e709407a337385ac5d5caadb Mon Sep 17 00:00:00 2001 From: Cruz Zhao Date: Tue, 25 Nov 2025 16:02:50 +0800 Subject: [PATCH] anolis: sched: fix task_struct leak of ID_PUSH_EXPELLEE ANBZ: #11591 If we decide not to migrate task when push expellee, we should put task struct to avoid task_struct leak before we break the loop. Fixes: be07a97e21a4 ("anolis: sched: push expellee tasks to a runnable cpu when expel starts") Signed-off-by: Cruz Zhao --- kernel/sched/fair.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 21a9dd1d282c..1b04998022fa 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6989,12 +6989,16 @@ static void __push_expellee(struct rq *rq) /* If there is no cpu we can migrate now, stop the loop to avoid overhead. */ if (dst_cpu == -1) { - if (backup_cpu == -1) + if (backup_cpu == -1) { + put_task_struct(p); break; + } dst_cpu = backup_cpu; dst_rq = cpu_rq(dst_cpu); - if (!raw_spin_rq_trylock(dst_rq)) + if (!raw_spin_rq_trylock(dst_rq)) { + put_task_struct(p); break; + } } migrate: deactivate_task(rq, p, 0); -- Gitee