diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched.c | 3 |
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); } |
