From: Pavel Begunkov Date: Sun, 15 Feb 2026 23:29:39 +0000 (+0000) Subject: io_uring/zcrx: declare some constants for query X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=dc156e0f1aae69659885422364438ff8eb022e09;p=thirdparty%2Fkernel%2Flinux.git io_uring/zcrx: declare some constants for query Add constants for zcrx features and supported registration flags that can be reused by the query code. I was going to add another registration flag, and this patch helps to avoid duplication and keeps changes specific to zcrx files. Signed-off-by: Pavel Begunkov Signed-off-by: Jens Axboe --- diff --git a/io_uring/query.c b/io_uring/query.c index 63cc30c9803d1..c1704d088374c 100644 --- a/io_uring/query.c +++ b/io_uring/query.c @@ -34,12 +34,12 @@ static ssize_t io_query_zcrx(union io_query_data *data) { struct io_uring_query_zcrx *e = &data->zcrx; - e->register_flags = ZCRX_REG_IMPORT; + e->register_flags = ZCRX_SUPPORTED_REG_FLAGS; e->area_flags = IORING_ZCRX_AREA_DMABUF; e->nr_ctrl_opcodes = __ZCRX_CTRL_LAST; e->rq_hdr_size = sizeof(struct io_uring); e->rq_hdr_alignment = L1_CACHE_BYTES; - e->features = ZCRX_FEATURE_RX_PAGE_SIZE; + e->features = ZCRX_FEATURES; e->__resv2 = 0; return sizeof(*e); } diff --git a/io_uring/zcrx.c b/io_uring/zcrx.c index 62d693287457f..73fa827597710 100644 --- a/io_uring/zcrx.c +++ b/io_uring/zcrx.c @@ -778,11 +778,13 @@ int io_register_zcrx_ifq(struct io_ring_ctx *ctx, return -EFAULT; if (!mem_is_zero(®.__resv, sizeof(reg.__resv)) || reg.zcrx_id) return -EINVAL; + if (reg.flags & ~ZCRX_SUPPORTED_REG_FLAGS) + return -EINVAL; if (reg.flags & ZCRX_REG_IMPORT) return import_zcrx(ctx, arg, ®); if (copy_from_user(&rd, u64_to_user_ptr(reg.region_ptr), sizeof(rd))) return -EFAULT; - if (reg.if_rxq == -1 || !reg.rq_entries || reg.flags) + if (reg.if_rxq == -1 || !reg.rq_entries) return -EINVAL; if (reg.rq_entries > IO_RQ_MAX_ENTRIES) { if (!(ctx->flags & IORING_SETUP_CLAMP)) diff --git a/io_uring/zcrx.h b/io_uring/zcrx.h index 32ab95b2cb811..0ddcf0ee88615 100644 --- a/io_uring/zcrx.h +++ b/io_uring/zcrx.h @@ -8,6 +8,9 @@ #include #include +#define ZCRX_SUPPORTED_REG_FLAGS (ZCRX_REG_IMPORT) +#define ZCRX_FEATURES (ZCRX_FEATURE_RX_PAGE_SIZE) + struct io_zcrx_mem { unsigned long size; bool is_dmabuf;