mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
io_uring: don't cancel all work on process exit
If we're sharing the ring across forks, then one process exiting means
that we cancel ALL work and prevent future work. This is overly
restrictive. As long as we cancel the work associated with the files
from the current task, it's safe to let others persist. Normal fd close
on exit will still wait (and cancel) pending work.
Fixes: fcb323cc53
("io_uring: io_uring: add support for async work inheriting files")
Reported-by: Andres Freund <andres@anarazel.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
73e08e711d
commit
ebe1002621
@ -5044,10 +5044,6 @@ static int io_uring_flush(struct file *file, void *data)
|
||||
struct io_ring_ctx *ctx = file->private_data;
|
||||
|
||||
io_uring_cancel_files(ctx, data);
|
||||
if (fatal_signal_pending(current) || (current->flags & PF_EXITING)) {
|
||||
io_cqring_overflow_flush(ctx, true);
|
||||
io_wq_cancel_all(ctx->io_wq);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user