]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
io_uring: safer sq_creds putting
authorPavel Begunkov <asml.silence@gmail.com>
Tue, 20 Apr 2021 11:03:32 +0000 (12:03 +0100)
committerJens Axboe <axboe@kernel.dk>
Tue, 20 Apr 2021 18:55:28 +0000 (12:55 -0600)
Put sq_creds as a part of io_ring_ctx_free(), it's easy to miss doing it
in io_sq_thread_finish(), especially considering past mistakes related
to ring creation failures.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/3becb1866467a1de82a97345a0a90d7fb8ff875e.1618916549.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index 34c1864eee212facf6985b9e62b894cc228fa7d4..e621c9f5729ffc01396bc446e9c15a8dc03e9e5b 100644 (file)
@@ -7229,8 +7229,6 @@ static void io_sq_thread_finish(struct io_ring_ctx *ctx)
 
                io_put_sq_data(sqd);
                ctx->sq_data = NULL;
-               if (ctx->sq_creds)
-                       put_cred(ctx->sq_creds);
        }
 }
 
@@ -8425,6 +8423,8 @@ static void io_ring_ctx_free(struct io_ring_ctx *ctx)
        mutex_unlock(&ctx->uring_lock);
        io_eventfd_unregister(ctx);
        io_destroy_buffers(ctx);
+       if (ctx->sq_creds)
+               put_cred(ctx->sq_creds);
 
        /* there are no registered resources left, nobody uses it */
        if (ctx->rsrc_node)