summaryrefslogtreecommitdiff
path: root/include/uapi/linux/param.h
diff options
context:
space:
mode:
authorJens Axboe <axboe@kernel.dk>2026-02-10 10:00:44 -0700
committerJens Axboe <axboe@kernel.dk>2026-02-16 15:56:31 -0700
commitbe3573124e630736d2d39650b12f5ef220b47ac1 (patch)
tree9dad99008c447e5d949d12b71706c383d35d0fb0 /include/uapi/linux/param.h
parentd21c362182aff7b4d994e35ceb04b6ed2da141d9 (diff)
io_uring/bpf_filter: pass in expected filter payload size
It's quite possible that opcodes that have payloads attached to them, like IORING_OP_OPENAT/OPENAT2 or IORING_OP_SOCKET, that these paylods can change over time. For example, on the openat/openat2 side, the struct open_how argument is extensible, and could be extended in the future to allow further arguments to be passed in. Allow registration of a cBPF filter to give the size of the filter as seen by userspace. If that filter is for an opcode that takes extra payload data, allow it if the application payload expectation is the same size than the kernels. If that is the case, the kernel supports filtering on the payload that the application expects. If the size differs, the behavior depends on the IO_URING_BPF_FILTER_SZ_STRICT flag: 1) If IO_URING_BPF_FILTER_SZ_STRICT is set and the size expectation differs, fail the attempt to load the filter. 2) If IO_URING_BPF_FILTER_SZ_STRICT isn't set, allow the filter if the userspace pdu size is smaller than what the kernel offers. 3) Regardless if IO_URING_BPF_FILTER_SZ_STRICT, fail loading the filter if the userspace pdu size is bigger than what the kernel supports. An attempt to load a filter due to sizing will error with -EMSGSIZE. For that error, the registration struct will have filter->pdu_size populated with the pdu size that the kernel uses. Reported-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'include/uapi/linux/param.h')
0 files changed, 0 insertions, 0 deletions