diff options
| author | Linus Torvalds <[email protected]> | 2013-08-30 00:02:48 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2013-08-30 00:02:48 +0000 |
| commit | ff497452636f4687e517964817b7e2bd99f4b44b (patch) | |
| tree | a02fd3216941b71ea58c6b57f84344be64168301 /drivers/pci/hotplug/ibmphp_hpc.c | |
| parent | Merge tag 'nfs-for-3.11-5' of git://git.linux-nfs.org/projects/trondmy/linux-nfs (diff) | |
| parent | workqueue: cond_resched() after processing each work item (diff) | |
| download | kernel-ff497452636f4687e517964817b7e2bd99f4b44b.tar.gz kernel-ff497452636f4687e517964817b7e2bd99f4b44b.zip | |
Merge branch 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
Pull workqueue fix from Tejun Heo:
"This contains one fix which could lead to system-wide lockup on
!PREEMPT kernels. It's very late in the cycle but this definitely is
a -stable material.
The problem is that workqueue worker tasks may process unlimited
number of work items back-to-back without every yielding inbetween.
This usually isn't noticeable but a work item which re-queues itself
waiting for someone else to do something can deadlock with
stop_machine. stop_machine will ensure nothing else happens on all
other cpus and the requeueing work item will reqeueue itself
indefinitely without ever yielding and thus preventing the CPU from
entering stop_machine.
Kudos to Jamie Liu for spotting and diagnosing the problem. This can
be trivially fixed by adding cond_resched() after processing each work
item"
* 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
workqueue: cond_resched() after processing each work item
Diffstat (limited to 'drivers/pci/hotplug/ibmphp_hpc.c')
0 files changed, 0 insertions, 0 deletions
