]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
io_uring/msg_ring: reject CQE32 flag pass-through to normal rings
authorMelbin K Mathew <mlbnkm1@gmail.com>
Wed, 1 Jul 2026 08:11:45 +0000 (10:11 +0200)
committerJens Axboe <axboe@kernel.dk>
Wed, 1 Jul 2026 11:39:26 +0000 (05:39 -0600)
commit15cd3ccf9b179f0f76948d0901be3b15028bc768
treedc028efdb0937b2faa02213c94940294dc5ff6f0
parentdf645b745941ea829b39134ac342f730f4d9d978
io_uring/msg_ring: reject CQE32 flag pass-through to normal rings

IORING_OP_MSG_RING with IORING_MSG_RING_FLAGS_PASS allows a sender to
pass completion flags through sqe->file_index. If the sender sets
IORING_CQE_F_32 in file_index, the target-side completion path treats it
as a 32b CQE and writes big_cqe[0] and big_cqe[1] into the CQ ring
regardless of whether the target ring was created with
IORING_SETUP_CQE32 or IORING_SETUP_CQE_MIXED.

On a normal 16b CQE ring, this writes 16 extra bytes (two u64 big_cqe
fields) into the next CQE slot in the ring buffer. As the receiving ring
doesn't understand 32b CQEs, this is incorrect and they should be
rejected.

Fixes: cbeb47a7b5f0 ("io_uring/msg_ring: Pass custom flags to the cqe")
Signed-off-by: Melbin K Mathew <mlbnkm1@gmail.com>
Link: https://patch.msgid.link/20260701081145.196730-1-mlbnkm1@gmail.com
[axboe: edit commit message]
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/msg_ring.c