mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 20:54:03 +02:00
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:
parent
796aa05475
commit
dcbd1c0548
|
|
@ -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_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
|
||||
size_t len;
|
||||
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 */
|
||||
if (ret == 1) {
|
||||
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;
|
||||
}
|
||||
iov_iter_init(&kmsg->msg.msg_iter, ITER_DEST, arg.iovs, ret,
|
||||
arg.out_len);
|
||||
arg.out_len);
|
||||
len = arg.out_len;
|
||||
} else {
|
||||
size_t len = sel->val;
|
||||
len = sel->val;
|
||||
|
||||
*sel = io_buffer_select(req, &len, sr->buf_group, issue_flags);
|
||||
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 0;
|
||||
return len;
|
||||
}
|
||||
|
||||
int io_recv(struct io_kiocb *req, unsigned int issue_flags)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user