Commit 07db298a authored by Pavel Begunkov's avatar Pavel Begunkov Committed by Jens Axboe
Browse files

io_uring: safer sq_creds putting



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: default avatarPavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/3becb1866467a1de82a97345a0a90d7fb8ff875e.1618916549.git.asml.silence@gmail.com


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 3a0a6902
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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)