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: pull vec alloc out of msghdr import

I'll need more control over iovec management, move
io_net_import_vec() out of io_msg_copy_hdr().

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

authored by

Pavel Begunkov and committed by
Jens Axboe
9fcb349f 17523a82

+15 -8
+15 -8
io_uring/net.c
··· 253 253 return -EFAULT; 254 254 sr->len = tmp_iov.iov_len; 255 255 } 256 - 257 - return 0; 258 256 } 259 - 260 - return io_net_import_vec(req, iomsg, (struct iovec __user *)uiov, 261 - msg->msg_iovlen, ddir); 257 + return 0; 262 258 } 263 259 264 260 static int io_copy_msghdr_from_user(struct user_msghdr *msg, ··· 324 328 return -EFAULT; 325 329 sr->len = tmp_iov.iov_len; 326 330 } 327 - return 0; 328 331 } 329 - 330 - return io_net_import_vec(req, iomsg, msg->msg_iov, msg->msg_iovlen, ddir); 332 + return 0; 331 333 } 332 334 333 335 static int io_sendmsg_copy_hdr(struct io_kiocb *req, ··· 336 342 int ret; 337 343 338 344 ret = io_msg_copy_hdr(req, iomsg, &msg, ITER_SOURCE, NULL); 345 + if (unlikely(ret)) 346 + return ret; 347 + 348 + if (!(req->flags & REQ_F_BUFFER_SELECT)) 349 + ret = io_net_import_vec(req, iomsg, msg.msg_iov, msg.msg_iovlen, 350 + ITER_SOURCE); 339 351 /* save msg_control as sys_sendmsg() overwrites it */ 340 352 sr->msg_control = iomsg->msg.msg_control_user; 341 353 return ret; ··· 719 719 ret = io_msg_copy_hdr(req, iomsg, &msg, ITER_DEST, &iomsg->uaddr); 720 720 if (unlikely(ret)) 721 721 return ret; 722 + 723 + if (!(req->flags & REQ_F_BUFFER_SELECT)) { 724 + ret = io_net_import_vec(req, iomsg, msg.msg_iov, msg.msg_iovlen, 725 + ITER_DEST); 726 + if (unlikely(ret)) 727 + return ret; 728 + } 722 729 return io_recvmsg_mshot_prep(req, iomsg, msg.msg_namelen, 723 730 msg.msg_controllen); 724 731 }