[PATCH review-only 11/17] io_uring/zcrx: split append out of area creation
Pavel Begunkov <[email protected]> Sat, 11 Jul 2026 11:40:04 +0100
| Newsgroups | org.kernel.vger.io-uring,org.kernel.vger.netdev |
|---|---|
| Message-ID | <20260711104004.mGrdCIEkR1KlnLQbYf-8LZFFAfJMNR_hG1pp9u9mwYY@z> |
A preparation patch, move appending an area from __zcrx_create_area() to the caller. Signed-off-by: Pavel Begunkov <[email protected]> --- io_uring/zcrx.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c index 4936d92f6339..40cabf4384d1 100644 --- a/io_uring/zcrx.c +++ b/io_uring/zcrx.c @@ -471,6 +471,7 @@ static int io_zcrx_append_area(struct io_zcrx_ifq *ifq, static int __zcrx_create_area(struct io_zcrx_ifq *ifq, struct io_uring_zcrx_area_reg *area_reg, + struct io_zcrx_area **res_area, u32 rx_buf_len) { int buf_size_shift = PAGE_SHIFT; @@ -544,10 +545,8 @@ static int __zcrx_create_area(struct io_zcrx_ifq *ifq, area->area_id = 0; area_reg->rq_area_token = zcrx_area_id_to_token(area->area_id); spin_lock_init(&area->freelist_lock); - - ret = io_zcrx_append_area(ifq, area); - if (!ret) - return 0; + *res_area = area; + return 0; err: if (area) { io_zcrx_unmap_area(ifq, area); @@ -560,7 +559,19 @@ static int io_zcrx_create_area(struct io_zcrx_ifq *ifq, struct io_uring_zcrx_area_reg *area_reg, struct io_uring_zcrx_ifq_reg *reg) { - return __zcrx_create_area(ifq, area_reg, reg->rx_buf_len); + struct io_zcrx_area *area; + int ret; + + ret = __zcrx_create_area(ifq, area_reg, &area, reg->rx_buf_len); + if (ret) + return ret; + + ret = io_zcrx_append_area(ifq, area); + if (ret) { + io_zcrx_free_area(ifq, area); + return ret; + } + return 0; } static struct io_zcrx_ifq *io_zcrx_ifq_alloc(struct io_ring_ctx *ctx) -- 2.54.0