io_uring: ensure only sqo_task has file notes
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 25 Jan 2021 11:42:20 +0000 (11:42 +0000)
committerJens Axboe <axboe@kernel.dk>
Mon, 1 Feb 2021 17:02:43 +0000 (10:02 -0700)
For SQPOLL io_uring we want to have only one file note held by
sqo_task. Add a warning to make sure it holds. It's deep in
io_uring_add_task_file() out of hot path, so shouldn't hurt.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index b05d374..68bf2c8 100644 (file)
@@ -9099,6 +9099,10 @@ static int io_uring_add_task_file(struct io_ring_ctx *ctx, struct file *file)
                                fput(file);
                                return ret;
                        }
+
+                       /* one and only SQPOLL file note, held by sqo_task */
+                       WARN_ON_ONCE((ctx->flags & IORING_SETUP_SQPOLL) &&
+                                    current != ctx->sqo_task);
                }
                tctx->last = file;
        }