Every close(io_uring) causes cancellation of all inflight requests carrying ->files. That's not nice but was neccessary up until recently. Now task->files removal is handled in the core code, so that part of flush can be removed. Signed-off-by: Pavel Begunkov <asml.silence@xxxxxxxxx> --- fs/io_uring.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/fs/io_uring.c b/fs/io_uring.c index 95d2bb7069c6..6536e24eb44e 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -8748,16 +8748,12 @@ void __io_uring_task_cancel(void) static int io_uring_flush(struct file *file, void *data) { - struct io_ring_ctx *ctx = file->private_data; + bool exiting = !data; - /* - * If the task is going away, cancel work it may have pending - */ if (fatal_signal_pending(current) || (current->flags & PF_EXITING)) - data = NULL; + exiting = true; - io_uring_cancel_task_requests(ctx, data); - io_uring_attempt_task_drop(file, !data); + io_uring_attempt_task_drop(file, exiting); return 0; } -- 2.24.0