From: Pavel Begunkov Date: Tue, 31 Mar 2026 21:07:41 +0000 (+0100) Subject: io_uring/zcrx: don't clear not allocated niovs X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52dcd1776bed614c6a270d9237df6105feab4c14;p=thirdparty%2Flinux.git io_uring/zcrx: don't clear not allocated niovs Now that area->is_mapped is set earlier before niovs array is allocated, io_zcrx_free_area -> io_zcrx_unmap_area in an error path can try to clear dma addresses for unallocated niovs, fix it. Fixes: 8c0cab0b7bf7 ("io_uring/zcrx: always dma map in advance") Signed-off-by: Pavel Begunkov Link: https://patch.msgid.link/cbcb7749b5a001ecd4d1c303515ce9403215640c.1774780198.git.asml.silence@gmail.com Signed-off-by: Jens Axboe --- diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c index 5c0a493407222..d84ad40eae498 100644 --- a/io_uring/zcrx.c +++ b/io_uring/zcrx.c @@ -289,8 +289,10 @@ static void io_zcrx_unmap_area(struct io_zcrx_ifq *ifq, return; area->is_mapped = false; - for (i = 0; i < area->nia.num_niovs; i++) - net_mp_niov_set_dma_addr(&area->nia.niovs[i], 0); + if (area->nia.niovs) { + for (i = 0; i < area->nia.num_niovs; i++) + net_mp_niov_set_dma_addr(&area->nia.niovs[i], 0); + } if (area->mem.is_dmabuf) { io_release_dmabuf(&area->mem);