]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
io_uring/rsrc: reject overflowing regvec bvec byte counts
authorJérémy Jean <Jeremy.Jean@oss.cyber.gouv.fr>
Wed, 12 Aug 2026 20:30:42 +0000 (20:30 +0000)
committerJens Axboe <axboe@kernel.dk>
Thu, 13 Aug 2026 01:53:35 +0000 (19:53 -0600)
commit6ca662cc71df7eb4eaf1b4bcb07cd3f188ad19f2
tree886c05e35a4f24e1634a7dd1da1d5bdcfa4bd400
parentbc0e8faf90e776a2f1f3967a04e8091e6bdb4977
io_uring/rsrc: reject overflowing regvec bvec byte counts

io_import_reg_vec() converts the estimated number of bio_vec entries
into iovec-sized storage when struct bio_vec is larger than struct
iovec. The conversion still multiplies nr_segs by sizeof(struct
bio_vec) in size_t without checking for overflow.

On 32-bit kernels, a registered buffer large enough to make
io_estimate_bvec_size() return 357913942 segments wraps the byte count
from 0x100000008 to 8. io_vec_realloc() then reserves only the input
iovecs plus one extra slot while io_vec_fill_bvec() writes the full
bio_vec array.

Check both the multiplication and the rounding addition before
deriving the replacement iovec count.

Fixes: b4e41050b212 ("io_uring/rsrc: raise registered buffer 1GB limit")
Assisted-by: Codex:gpt-5
Signed-off-by: Jérémy Jean <Jeremy.Jean@oss.cyber.gouv.fr>
Link: https://patch.msgid.link/20260812203042.720348-1-Jeremy.Jean@oss.cyber.gouv.fr
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/rsrc.c