io-wq: kill hashed waitqueue before manager exits
authorJens Axboe <axboe@kernel.dk>
Fri, 5 Mar 2021 15:14:08 +0000 (08:14 -0700)
committerJens Axboe <axboe@kernel.dk>
Fri, 5 Mar 2021 15:44:09 +0000 (08:44 -0700)
commit09ca6c40c2024211657fdb2c50522a355610c3b7
tree5f7e881811b2efdd4b8ba1240f61caaaea7ee0b1
parentb5b0ecb736f1ce1e68eb50613c0cfecff10198eb
io-wq: kill hashed waitqueue before manager exits

If we race with shutting down the io-wq context and someone queueing
a hashed entry, then we can exit the manager with it armed. If it then
triggers after the manager has exited, we can have a use-after-free where
io_wqe_hash_wake() attempts to wake a now gone manager process.

Move the killing of the hashed write queue into the manager itself, so
that we know we've killed it before the task exits.

Fixes: e941894eae31 ("io-wq: make buffered file write hashed work map per-ctx")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io-wq.c