Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

io_uring/net: don't use io_do_buffer_select at prep

Prep code is interested whether it's a selected buffer request, not
whether a buffer has already been selected like what
io_do_buffer_select() returns. Check for REQ_F_BUFFER_SELECT directly.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/4488a029ac698554bebf732263fe19d7734affa6.1743437358.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Pavel Begunkov and committed by
Jens Axboe
e9ff9ae1 9fe99eed

+7 -15
+7 -15
io_uring/net.c
··· 361 361 } 362 362 if (sr->flags & IORING_RECVSEND_FIXED_BUF) 363 363 return 0; 364 - if (!io_do_buffer_select(req)) { 365 - ret = import_ubuf(ITER_SOURCE, sr->buf, sr->len, 366 - &kmsg->msg.msg_iter); 367 - if (unlikely(ret < 0)) 368 - return ret; 369 - } 370 - return 0; 364 + if (req->flags & REQ_F_BUFFER_SELECT) 365 + return 0; 366 + return import_ubuf(ITER_SOURCE, sr->buf, sr->len, &kmsg->msg.msg_iter); 371 367 } 372 368 373 369 static int io_sendmsg_setup(struct io_kiocb *req, const struct io_uring_sqe *sqe) ··· 719 723 { 720 724 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); 721 725 struct io_async_msghdr *kmsg; 722 - int ret; 723 726 724 727 kmsg = io_msg_alloc_async(req); 725 728 if (unlikely(!kmsg)) ··· 734 739 kmsg->msg.msg_iocb = NULL; 735 740 kmsg->msg.msg_ubuf = NULL; 736 741 737 - if (!io_do_buffer_select(req)) { 738 - ret = import_ubuf(ITER_DEST, sr->buf, sr->len, 739 - &kmsg->msg.msg_iter); 740 - if (unlikely(ret)) 741 - return ret; 742 - } 743 - return 0; 742 + if (req->flags & REQ_F_BUFFER_SELECT) 743 + return 0; 744 + return import_ubuf(ITER_DEST, sr->buf, sr->len, 745 + &kmsg->msg.msg_iter); 744 746 } 745 747 746 748 return io_recvmsg_copy_hdr(req, kmsg);