From 072f3d911894673df64cf0059609d26d5778548a Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Sun, 26 Jan 2020 10:17:12 -0700 Subject: [PATCH 1116/2944] io_uring: don't cancel all work on process exit to #26323578 commit ebe10026210f9ea740b9a050ee84a166690fddde upstream. 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: fcb323cc53e2 ("io_uring: io_uring: add support for async work inheriting files") Reported-by: Andres Freund Signed-off-by: Jens Axboe Signed-off-by: Joseph Qi Acked-by: Xiaoguang Wang --- fs/io_uring.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index 448553f..b531b1b 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -5031,10 +5031,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; } -- 1.8.3.1