Revision ff497452636f4687e517964817b7e2bd99f4b44b authored by Linus Torvalds on 30 August 2013, 00:02:48 UTC, committed by Linus Torvalds on 30 August 2013, 00:02:48 UTC
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
2 parent s 06a557f + b22ce27
History
File Mode Size
check-all.sh -rw-r--r-- 434 bytes
rt-tester.py -rw-r--r-- 5.2 KB
t2-l1-2rt-sameprio.tst -rw-r--r-- 1.5 KB
t2-l1-pi.tst -rw-r--r-- 1.2 KB
t2-l1-signal.tst -rw-r--r-- 1.2 KB
t2-l2-2rt-deadlock.tst -rw-r--r-- 1.3 KB
t3-l1-pi-1rt.tst -rw-r--r-- 1.4 KB
t3-l1-pi-2rt.tst -rw-r--r-- 1.4 KB
t3-l1-pi-3rt.tst -rw-r--r-- 1.4 KB
t3-l1-pi-signal.tst -rw-r--r-- 1.5 KB
t3-l1-pi-steal.tst -rw-r--r-- 1.6 KB
t3-l2-pi.tst -rw-r--r-- 1.4 KB
t4-l2-pi-deboost.tst -rw-r--r-- 2.0 KB
t5-l4-pi-boost-deboost-setsched.tst -rw-r--r-- 2.9 KB
t5-l4-pi-boost-deboost.tst -rw-r--r-- 2.2 KB

back to top