]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
io_uring: remove WRITE_ONCE() in io_uring_create()
authorCaleb Sander Mateos <csander@purestorage.com>
Thu, 4 Sep 2025 16:12:22 +0000 (10:12 -0600)
committerJens Axboe <axboe@kernel.dk>
Thu, 4 Sep 2025 23:22:24 +0000 (17:22 -0600)
There's no need to use WRITE_ONCE() to set ctx->submitter_task in
io_uring_create() since no other task can access the io_ring_ctx until a
file descriptor is associated with it. So use a normal assignment
instead of WRITE_ONCE().

Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Link: https://lore.kernel.org/r/20250904161223.2600435-1-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/io_uring.c

index 6c07efac977ce66dbed4c154046f6a1974334fbd..20dfa5ef75dcca8898b2f06378b81a47283d408d 100644 (file)
@@ -3891,8 +3891,13 @@ static __cold int io_uring_create(unsigned entries, struct io_uring_params *p,
        }
 
        if (ctx->flags & IORING_SETUP_SINGLE_ISSUER
-           && !(ctx->flags & IORING_SETUP_R_DISABLED))
-               WRITE_ONCE(ctx->submitter_task, get_task_struct(current));
+           && !(ctx->flags & IORING_SETUP_R_DISABLED)) {
+               /*
+                * Unlike io_register_enable_rings(), don't need WRITE_ONCE()
+                * since ctx isn't yet accessible from other tasks
+                */
+               ctx->submitter_task = get_task_struct(current);
+       }
 
        file = io_uring_get_file(ctx);
        if (IS_ERR(file)) {