diff options
Diffstat (limited to 'kernel/sched')
-rw-r--r-- | kernel/sched/core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9034918..3d063e2 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -2475,8 +2475,10 @@ need_resched: * If a worker went to sleep, notify and ask workqueue * whether it wants to wake up a task to maintain * concurrency. + * Only call wake up if prev isn't blocked on a sleeping + * spin lock. */ - if (prev->flags & PF_WQ_WORKER) { + if (prev->flags & PF_WQ_WORKER && !prev->saved_state) { struct task_struct *to_wakeup; to_wakeup = wq_worker_sleeping(prev, cpu); |