Skip to content

Commit

Permalink
io_uring: clean rings on NO_MMAP alloc fail
Browse files Browse the repository at this point in the history
[ Upstream commit cef59d1 ]

We make a few cancellation judgements based on ctx->rings, so let's
zero it afer deallocation for IORING_SETUP_NO_MMAP just like it's
done with the mmap case. Likely, it's not a real problem, but zeroing
is safer and better tested.

Cc: stable@vger.kernel.org
Fixes: 03d89a2 ("io_uring: support for user allocated memory for rings/sqes")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/9ff6cdf91429b8a51699c210e1f6af6ea3f8bdcf.1710255382.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
isilence authored and gregkh committed Apr 3, 2024
1 parent 94f7593 commit f81532b
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions io_uring/io_uring.c
Expand Up @@ -2757,14 +2757,15 @@ static void io_rings_free(struct io_ring_ctx *ctx)
if (!(ctx->flags & IORING_SETUP_NO_MMAP)) {
io_mem_free(ctx->rings);
io_mem_free(ctx->sq_sqes);
ctx->rings = NULL;
ctx->sq_sqes = NULL;
} else {
io_pages_free(&ctx->ring_pages, ctx->n_ring_pages);
ctx->n_ring_pages = 0;
io_pages_free(&ctx->sqe_pages, ctx->n_sqe_pages);
ctx->n_sqe_pages = 0;
}

ctx->rings = NULL;
ctx->sq_sqes = NULL;
}

void *io_mem_alloc(size_t size)
Expand Down

0 comments on commit f81532b

Please sign in to comment.