]> Gentwo Git Trees - linux/.git/commitdiff
io_uring/zcrx: add io_fill_zcrx_offsets()
authorDavid Wei <dw@davidwei.uk>
Thu, 13 Nov 2025 10:46:17 +0000 (10:46 +0000)
committerJens Axboe <axboe@kernel.dk>
Thu, 13 Nov 2025 18:19:37 +0000 (11:19 -0700)
Add a helper io_fill_zcrx_offsets() that sets the constant offsets in
struct io_uring_zcrx_offsets returned to userspace.

Signed-off-by: David Wei <dw@davidwei.uk>
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/zcrx.c

index 815992aff246d5acd6acad2810d6688c13e8e1e0..da7e556c349ef8d4f00b2758f69402f9c6a88baf 100644 (file)
@@ -345,6 +345,13 @@ static void io_zcrx_get_niov_uref(struct net_iov *niov)
        atomic_inc(io_get_user_counter(niov));
 }
 
+static void io_fill_zcrx_offsets(struct io_uring_zcrx_offsets *offsets)
+{
+       offsets->head = offsetof(struct io_uring, head);
+       offsets->tail = offsetof(struct io_uring, tail);
+       offsets->rqes = ALIGN(sizeof(struct io_uring), L1_CACHE_BYTES);
+}
+
 static int io_allocate_rbuf_ring(struct io_ring_ctx *ctx,
                                 struct io_zcrx_ifq *ifq,
                                 struct io_uring_zcrx_ifq_reg *reg,
@@ -356,7 +363,8 @@ static int io_allocate_rbuf_ring(struct io_ring_ctx *ctx,
        void *ptr;
        int ret;
 
-       off = ALIGN(sizeof(struct io_uring), L1_CACHE_BYTES);
+       io_fill_zcrx_offsets(&reg->offsets);
+       off = reg->offsets.rqes;
        size = off + sizeof(struct io_uring_zcrx_rqe) * reg->rq_entries;
        if (size > rd->size)
                return -EINVAL;
@@ -372,9 +380,6 @@ static int io_allocate_rbuf_ring(struct io_ring_ctx *ctx,
        ifq->rq_ring = (struct io_uring *)ptr;
        ifq->rqes = (struct io_uring_zcrx_rqe *)(ptr + off);
 
-       reg->offsets.head = offsetof(struct io_uring, head);
-       reg->offsets.tail = offsetof(struct io_uring, tail);
-       reg->offsets.rqes = off;
        return 0;
 }