From 810ce4cd6fe48276ec8068135a71ab50193883c7 Mon Sep 17 00:00:00 2001 From: Bjorn Helgaas Date: Mon, 31 May 2004 23:40:59 -0700 Subject: [PATCH] [PATCH] active_load_balance() deadlock active_load_balance() looks susceptible to deadlock when busiest==rq. Without the following patch, my 128-way box deadlocks consistently during boot-time driver init. --- kernel/sched.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/sched.c b/kernel/sched.c index e4966cb2a41c1..af767b38ca060 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -1844,6 +1844,8 @@ static void active_load_balance(runqueue_t *busiest, int busiest_cpu) } rq = cpu_rq(push_cpu); + if (busiest == rq) + goto next_group; double_lock_balance(busiest, rq); move_tasks(rq, push_cpu, busiest, 1, sd, IDLE); spin_unlock(&rq->lock); -- 2.53.0