io_uring/net: let io_recv_buf_select return the length of the buffer region

In preparation to using this field as an upper limit to truncation,
return the size of the allocated region.

Fixes: ae98dbf43d ("io_uring/kbuf: add support for incremental buffer consumption")
Cc: stable@vger.kernel.org
Signed-off-by: Gabriel Krisman Bertazi <krisman@suse.de>
Link: https://patch.msgid.link/20260902230041.1320658-2-krisman@suse.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Gabriel Krisman Bertazi 2026-09-02 20:00:40 -03:00 committed by Jens Axboe
parent 796aa05475
commit dcbd1c0548

View File

@ -1108,6 +1108,7 @@ static int io_recv_buf_select(struct io_kiocb *req, struct io_async_msghdr *kmsg
struct io_br_sel *sel, unsigned int issue_flags) struct io_br_sel *sel, unsigned int issue_flags)
{ {
struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
size_t len;
int ret; int ret;
/* /*
@ -1153,13 +1154,14 @@ static int io_recv_buf_select(struct io_kiocb *req, struct io_async_msghdr *kmsg
/* special case 1 vec, can be a fast path */ /* special case 1 vec, can be a fast path */
if (ret == 1) { if (ret == 1) {
sr->buf = arg.iovs[0].iov_base; sr->buf = arg.iovs[0].iov_base;
sr->len = arg.iovs[0].iov_len; len = sr->len = arg.iovs[0].iov_len;
goto map_ubuf; goto map_ubuf;
} }
iov_iter_init(&kmsg->msg.msg_iter, ITER_DEST, arg.iovs, ret, iov_iter_init(&kmsg->msg.msg_iter, ITER_DEST, arg.iovs, ret,
arg.out_len); arg.out_len);
len = arg.out_len;
} else { } else {
size_t len = sel->val; len = sel->val;
*sel = io_buffer_select(req, &len, sr->buf_group, issue_flags); *sel = io_buffer_select(req, &len, sr->buf_group, issue_flags);
if (!sel->addr) if (!sel->addr)
@ -1173,7 +1175,7 @@ static int io_recv_buf_select(struct io_kiocb *req, struct io_async_msghdr *kmsg
return ret; return ret;
} }
return 0; return len;
} }
int io_recv(struct io_kiocb *req, unsigned int issue_flags) int io_recv(struct io_kiocb *req, unsigned int issue_flags)