io_uring/kbuf: flag partial buffer mappings io_uring-6.16-20250626
authorJens Axboe <axboe@kernel.dk>
Thu, 26 Jun 2025 18:17:48 +0000 (12:17 -0600)
committerJens Axboe <axboe@kernel.dk>
Thu, 26 Jun 2025 18:17:48 +0000 (12:17 -0600)
commit178b8ff66ff827c41b4fa105e9aabb99a0b5c537
tree829ad60f69691824b13aaba88c84e45314add471
parent9a709b7e98e6fa51600b5f2d24c5068efa6d39de
io_uring/kbuf: flag partial buffer mappings

A previous commit aborted mapping more for a non-incremental ring for
bundle peeking, but depending on where in the process this peeking
happened, it would not necessarily prevent a retry by the user. That can
create gaps in the received/read data.

Add struct buf_sel_arg->partial_map, which can pass this information
back. The networking side can then map that to internal state and use it
to gate retry as well.

Since this necessitates a new flag, change io_sr_msg->retry to a
retry_flags member, and store both the retry and partial map condition
in there.

Cc: stable@vger.kernel.org
Fixes: 26ec15e4b0c1 ("io_uring/kbuf: don't truncate end buffer for multiple buffer peeks")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/kbuf.c
io_uring/kbuf.h
io_uring/net.c