summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Begunkov <asml.silence@gmail.com>2025-05-27 18:07:33 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-07-06 11:04:11 +0200
commitda3d5defe7e404d86c6da3eaedc6a974685c07a9 (patch)
tree26c4f85ce01b39e6e7fb16883d6ec4705f08afb5
parentd9f74011356fd0823d62d38eea1b50326e7f479b (diff)
io_uring/zcrx: fix area release on registration failure
[ Upstream commit 0ec33c81d9c7342f03864101ddb2e717a0cce03e ] On area registration failure there might be no ifq set and it's not safe to access area->ifq in the release path without checking it first. Cc: stable@vger.kernel.org Fixes: f12ecf5e1c5ec ("io_uring/zcrx: fix late dma unmap for a dead dev") Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/bc02878678a5fec28bc77d33355cdba735418484.1748365640.git.asml.silence@gmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--io_uring/zcrx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c
index 7214236c1488..a53058dd6b7a 100644
--- a/io_uring/zcrx.c
+++ b/io_uring/zcrx.c
@@ -222,7 +222,8 @@ static void io_free_rbuf_ring(struct io_zcrx_ifq *ifq)
static void io_zcrx_free_area(struct io_zcrx_area *area)
{
- io_zcrx_unmap_area(area->ifq, area);
+ if (area->ifq)
+ io_zcrx_unmap_area(area->ifq, area);
io_release_area_mem(&area->mem);
kvfree(area->freelist);