Commit 6d90215
workqueue: Don't rely on wq->rescuer to stop rescuer
The commit1 def98c8 ("workqueue: Fix spurious sanity check failures
in destroy_workqueue()") tries to fix spurious sanity check failures by
stopping send_mayday() via setting wq->rescuer to NULL.
But it fails to stop the pwq->mayday_node requeuing in the rescuer, and
the commit2 e66b39a ("workqueue: Fix pwq ref leak in
rescuer_thread()") fixes it by checking wq->rescuer which is the result
of commit1.
Both commits together really fix spurious sanity check failures caused
by the rescuer, but they both use a convoluted method by relying on
wq->rescuer state rather than the real count of work items.
Actually __WQ_DESTROYING and drain_workqueue() together already stop
send_mayday() by draining all the work items and ensuring no new work
item requeuing.
And the more proper fix to stop the pwq->mayday_node requeuing in the
rescuer is from commit3 4f3f4cf ("workqueue: avoid unneeded
requeuing the pwq in rescuer thread") and renders the checking of
wq->rescuer in commit2 unnecessary.
So __WQ_DESTROYING, drain_workqueue() and commit3 together fix spurious
sanity check failures introduced by the rescuer.
Just remove the convoluted code of using wq->rescuer.
Signed-off-by: Lai Jiangshan <[email protected]>
Signed-off-by: Tejun Heo <[email protected]>1 parent 7b05c90 commit 6d90215
1 file changed
+5
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3539 | 3539 | | |
3540 | 3540 | | |
3541 | 3541 | | |
3542 | | - | |
3543 | | - | |
| 3542 | + | |
3544 | 3543 | | |
3545 | | - | |
| 3544 | + | |
3546 | 3545 | | |
3547 | 3546 | | |
3548 | 3547 | | |
| |||
5905 | 5904 | | |
5906 | 5905 | | |
5907 | 5906 | | |
5908 | | - | |
5909 | | - | |
5910 | | - | |
5911 | | - | |
5912 | | - | |
5913 | | - | |
5914 | | - | |
5915 | 5907 | | |
5916 | | - | |
5917 | | - | |
| 5908 | + | |
| 5909 | + | |
| 5910 | + | |
5918 | 5911 | | |
5919 | 5912 | | |
5920 | 5913 | | |
| |||
0 commit comments