[PATCH 1/3] io_uring: register single issuer task at creation

From: Dylan Yudaken
Date: Mon Sep 26 2022 - 11:17:45 EST


Instead of picking the task from the first submitter task, rather use the
creator task.
The downside of this is that users are unable to move tasks before
submitting.

However this simplifies the logic here. For example CQEs are able to be
posted by io_uring_register, which could also be from a separate
task. This could be confusing as this does not count as a submit, and so
would not be the registered task.

Additionally this removes init logic from the submission path, which can
always be a bit confusing.

Signed-off-by: Dylan Yudaken <dylany@xxxxxx>
---
io_uring/io_uring.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index 2965b354efc8..3f40defd721d 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -3357,6 +3357,9 @@ static __cold int io_uring_create(unsigned entries, struct io_uring_params *p,
goto err;
}

+ if (ctx->flags & IORING_SETUP_SINGLE_ISSUER)
+ ctx->submitter_task = get_task_struct(current);
+
file = io_uring_get_file(ctx);
if (IS_ERR(file)) {
ret = PTR_ERR(file);
--
2.30.2