Lai Jiangshan 2355b70fd5 workqueue: avoid recursion in run_workqueue()
1) lockdep will complain when run_workqueue() performs recursion.

2) The recursive implementation of run_workqueue() means that
   flush_workqueue() and its documentation are inconsistent.  This may
   hide deadlocks and other bugs.

3) The recursion in run_workqueue() will poison cwq->current_work, but
   flush_work() and __cancel_work_timer(), etcetera need a reliable
   cwq->current_work.

Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Eric Dumazet <dada1@cosmosbay.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-04-02 19:05:00 -07:00
..
2009-04-02 19:04:55 -07:00
2009-03-30 21:46:55 +02:00
2009-02-21 14:17:17 -08:00
2009-01-14 18:09:02 +01:00
2009-02-10 00:41:54 +01:00
2009-01-08 08:31:12 -08:00
2009-03-30 22:05:16 +10:30
2009-02-18 19:26:33 +01:00
2009-02-26 21:56:07 +01:00
2009-01-06 11:07:15 +01:00
2009-03-24 10:52:46 +11:00