From 7647c99cc21d89b624ee579a8dc182b9f4f4322d Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Thu, 9 Jul 2015 15:23:04 +0900 Subject: [PATCH] do_migrate(): disable IRQ while holding migq_lock to avoid deadlocking with reschedule interrupts --- kernel/process.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/process.c b/kernel/process.c index 2e21de9e..b13aaee0 100644 --- a/kernel/process.c +++ b/kernel/process.c @@ -2151,7 +2151,7 @@ static void do_migrate(void) struct migrate_request *req, *tmp; unsigned long irqstate = 0; - ihk_mc_spinlock_lock_noirq(&cur_v->migq_lock); + irqstate = ihk_mc_spinlock_lock(&cur_v->migq_lock); list_for_each_entry_safe(req, tmp, &cur_v->migq, list) { int cpu_id; int old_cpu_id; @@ -2195,7 +2195,7 @@ static void do_migrate(void) ack: waitq_wakeup(&req->wq); } - ihk_mc_spinlock_unlock_noirq(&cur_v->migq_lock); + ihk_mc_spinlock_unlock(&cur_v->migq_lock, irqstate); } void schedule(void)