Commit 835b69c
workqueue: Put the pwq after detaching the rescuer from the pool
[ Upstream commit e769461 ]
The commit 68f8305("workqueue: Reap workers via kthread_stop() and
remove detach_completion") adds code to reap the normal workers but
mistakenly does not handle the rescuer and also removes the code waiting
for the rescuer in put_unbound_pool(), which caused a use-after-free bug
reported by Cheung Wall.
To avoid the use-after-free bug, the pool’s reference must be held until
the detachment is complete. Therefore, move the code that puts the pwq
after detaching the rescuer from the pool.
Reported-by: cheung wall <[email protected]>
Cc: cheung wall <[email protected]>
Link: https://lore.kernel.org/lkml/CAKHoSAvP3iQW+GwmKzWjEAOoPvzeWeoMO0Gz7Pp3_4kxt-RMoA@mail.gmail.com/
Fixes: 68f8305("workqueue: Reap workers via kthread_stop() and remove detach_completion")
Signed-off-by: Lai Jiangshan <[email protected]>
Signed-off-by: Tejun Heo <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>1 parent 8401cad commit 835b69c
1 file changed
+6
-6
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3516 | 3516 | | |
3517 | 3517 | | |
3518 | 3518 | | |
3519 | | - | |
3520 | | - | |
3521 | | - | |
3522 | | - | |
3523 | | - | |
3524 | | - | |
3525 | 3519 | | |
3526 | 3520 | | |
3527 | 3521 | | |
| |||
3532 | 3526 | | |
3533 | 3527 | | |
3534 | 3528 | | |
| 3529 | + | |
| 3530 | + | |
| 3531 | + | |
| 3532 | + | |
| 3533 | + | |
| 3534 | + | |
3535 | 3535 | | |
3536 | 3536 | | |
3537 | 3537 | | |
| |||
0 commit comments