summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index d9716a3ec8cd..78e60fe666d6 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -1782,9 +1782,11 @@ repeat:
cpu_src = p->thread_info->cpu;
rq_src = cpu_rq(cpu_src);
+ local_irq_save(flags);
double_rq_lock(rq_src, rq_dest);
if (p->thread_info->cpu != cpu_src) {
double_rq_unlock(rq_src, rq_dest);
+ local_irq_restore(flags);
goto repeat;
}
if (rq_src == rq) {
@@ -1795,6 +1797,7 @@ repeat:
}
}
double_rq_unlock(rq_src, rq_dest);
+ local_irq_restore(flags);
up(&req->sem);
}