diff options
author | Jens Axboe <axboe@kernel.dk> | 2021-02-24 03:59:06 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-02-24 04:33:41 +0100 |
commit | eb2de9418d56b5e6ebf27bad51dbce3e22ee109b (patch) | |
tree | ca26faeedb21d7d419bbd5e4c809dd82516ca4da /.clang-format | |
parent | io-wq: fix races around manager/worker creation and task exit (diff) | |
download | linux-eb2de9418d56b5e6ebf27bad51dbce3e22ee109b.tar.xz linux-eb2de9418d56b5e6ebf27bad51dbce3e22ee109b.zip |
io-wq: fix race around io_worker grabbing
There's a small window between lookup dropping the reference to the
worker and calling wake_up_process() on the worker task, where the worker
itself could have exited. We ensure that the worker struct itself is
valid, but worker->task may very well be gone by the time we issue the
wakeup.
Fix the race by using a completion triggered by the reference going to
zero, and having exit wait for that completion before proceeding.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to '.clang-format')
0 files changed, 0 insertions, 0 deletions