Pull more io_uring updates from Jens Axboe: "This is a mix of cleanups and fixes. No major fixes in here, just a bunch of little fixes. Some of them marked for stable as it fixes behavioral issues - Fix an issue with SOCKET_URING_OP_SETSOCKOPT for netlink sockets, due to a too restrictive check on it having an ioctl handler - Remove a redundant SQPOLL check in ring creation - Kill dead accounting for zero-copy send, which doesn't use ->buf or ->len post the initial setup - Fix missing clamp of the allocation hint, which could cause allocations to fall outside of the range the application asked for. Still within the allowed limits. - Fix for IORING_OP_PIPE's handling of direct descriptors - Tweak to the API for the newly added BPF filters, making them more future proof in terms of how applications deal with them - A few fixes for zcrx, fixing a few error handling conditions - Fix for zcrx request flag checking - Add support for querying the zcrx page size - Improve the NO_SQARRAY static branch inc/dec, avoiding busy conditions causing too much traffic - Various little cleanups" * tag 'io_uring-7.0-20260216' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux: io_uring/bpf_filter: pass in expected filter payload size io_uring/bpf_filter: move filter size and populate helper into struct io_uring/cancel: de-unionize file and user_data in struct io_cancel_data io_uring/rsrc: improve regbuf iov validation io_uring: remove unneeded io_send_zc accounting io_uring/cmd_net: fix too strict requirement on ioctl io_uring: delay sqarray static branch disablement io_uring/query: add query.h copyright notice io_uring/query: return support for custom rx page size io_uring/zcrx: check unsupported flags on import io_uring/zcrx: fix post open error handling io_uring/zcrx: fix sgtable leak on mapping failures io_uring: use the right type for creds iteration io_uring/openclose: fix io_pipe_fixed() slot tracking for specific slots io_uring/filetable: clamp alloc_hint to the configured alloc range io_uring/rsrc: replace reg buffer bit field with flags io_uring/zcrx: improve types for size calculation io_uring/tctx: avoid modifying loop variable in io_ring_add_registered_file io_uring: simplify IORING_SETUP_DEFER_TASKRUN && !SQPOLL check
Showing the changes to include/uapi/linux (3 of 18 files). Show all
Unified · Split
| @@ -1090,6 +1090,14 @@ enum zcrx_reg_flags { · 1089 unmodified lines | |||
| 1090 | ZCRX_REG_IMPORT = 1, | 1090 | ZCRX_REG_IMPORT = 1, |
| 1091 | }; | 1091 | }; |
| 1092 | 1092 | ||
| 1093 | enum zcrx_features { | ||
| 1094 | /* | ||
| 1095 | * The user can ask for the desired rx page size by passing the | ||
| 1096 | * value in struct io_uring_zcrx_ifq_reg::rx_buf_len. | ||
| 1097 | */ | ||
| 1098 | ZCRX_FEATURE_RX_PAGE_SIZE = 1 << 0, | ||
| 1099 | }; | ||
| 1100 | |||
| 1093 | /* | 1101 | /* |
| 1094 | * Argument for IORING_REGISTER_ZCRX_IFQ | 1102 | * Argument for IORING_REGISTER_ZCRX_IFQ |
| 1095 | */ | 1103 | */ |
| @@ -35,13 +35,19 @@ enum { · 34 unmodified lines | |||
| 35 | * If set, any currently unset opcode will have a deny filter attached | 35 | * If set, any currently unset opcode will have a deny filter attached |
| 36 | */ | 36 | */ |
| 37 | IO_URING_BPF_FILTER_DENY_REST = 1, | 37 | IO_URING_BPF_FILTER_DENY_REST = 1, |
| 38 | /* | ||
| 39 | * If set, if kernel and application don't agree on pdu_size for | ||
| 40 | * the given opcode, fail the registration of the filter. | ||
| 41 | */ | ||
| 42 | IO_URING_BPF_FILTER_SZ_STRICT = 2, | ||
| 38 | }; | 43 | }; |
| 39 | 44 | ||
| 40 | struct io_uring_bpf_filter { | 45 | struct io_uring_bpf_filter { |
| 41 | __u32 opcode; /* io_uring opcode to filter */ | 46 | __u32 opcode; /* io_uring opcode to filter */ |
| 42 | __u32 flags; | 47 | __u32 flags; |
| 43 | __u32 filter_len; /* number of BPF instructions */ | 48 | __u32 filter_len; /* number of BPF instructions */ |
| 44 | __u32 resv; | 49 | __u8 pdu_size; /* expected pdu size for opcode */ |
| 50 | __u8 resv[3]; | ||
| 45 | __u64 filter_ptr; /* pointer to BPF filter */ | 51 | __u64 filter_ptr; /* pointer to BPF filter */ |
| 46 | __u64 resv2[5]; | 52 | __u64 resv2[5]; |
| 47 | }; | 53 | }; |
| @@ -1,6 +1,9 @@ | |||
| 1 | /* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */ | 1 | /* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */ |
| 2 | /* | 2 | /* |
| 3 | * Header file for the io_uring query interface. | 3 | * Header file for the io_uring query interface. |
| 4 | * | ||
| 5 | * Copyright (C) 2026 Pavel Begunkov <asml.silence@gmail.com> | ||
| 6 | * Copyright (C) Meta Platforms, Inc. | ||
| 4 | */ | 7 | */ |
| 5 | #ifndef LINUX_IO_URING_QUERY_H | 8 | #ifndef LINUX_IO_URING_QUERY_H |
| 6 | #define LINUX_IO_URING_QUERY_H | 9 | #define LINUX_IO_URING_QUERY_H |
| @@ -50,7 +53,8 @@ struct io_uring_query_zcrx { · 43 unmodified lines | |||
| 50 | __u64 area_flags; | 53 | __u64 area_flags; |
| 51 | /* The number of supported ZCRX_CTRL_* opcodes */ | 54 | /* The number of supported ZCRX_CTRL_* opcodes */ |
| 52 | __u32 nr_ctrl_opcodes; | 55 | __u32 nr_ctrl_opcodes; |
| 53 | __u32 __resv1; | 56 | /* Bitmask of ZCRX_FEATURE_* indicating which features are available */ |
| 57 | __u32 features; | ||
| 54 | /* The refill ring header size */ | 58 | /* The refill ring header size */ |
| 55 | __u32 rq_hdr_size; | 59 | __u32 rq_hdr_size; |
| 56 | /* The alignment for the header */ | 60 | /* The alignment for the header */ |