Lines Matching full:kmsg
178 struct io_async_msghdr *kmsg, in io_setup_async_msg() argument
187 kfree(kmsg->free_iov); in io_setup_async_msg()
191 memcpy(async_msg, kmsg, sizeof(*kmsg)); in io_setup_async_msg()
199 if (iter_is_iovec(&kmsg->msg.msg_iter) && !kmsg->free_iov) { in io_setup_async_msg()
200 size_t fast_idx = iter_iov(&kmsg->msg.msg_iter) - kmsg->fast_iov; in io_setup_async_msg()
406 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg() local
417 kmsg = req->async_data; in io_sendmsg()
418 kmsg->msg.msg_control_user = sr->msg_control; in io_sendmsg()
423 kmsg = &iomsg; in io_sendmsg()
428 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
434 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg()
436 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg()
440 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
442 kmsg->msg.msg_controllen = 0; in io_sendmsg()
443 kmsg->msg.msg_control = NULL; in io_sendmsg()
446 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
453 if (kmsg->free_iov) in io_sendmsg()
454 kfree(kmsg->free_iov); in io_sendmsg()
731 static int io_recvmsg_prep_multishot(struct io_async_msghdr *kmsg, in io_recvmsg_prep_multishot() argument
738 hdr = sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_prep_multishot()
739 kmsg->controllen; in io_recvmsg_prep_multishot()
743 if (kmsg->controllen) { in io_recvmsg_prep_multishot()
744 unsigned long control = ubuf + hdr - kmsg->controllen; in io_recvmsg_prep_multishot()
746 kmsg->msg.msg_control_user = (void __user *) control; in io_recvmsg_prep_multishot()
747 kmsg->msg.msg_controllen = kmsg->controllen; in io_recvmsg_prep_multishot()
752 kmsg->payloadlen = *len = *len - hdr; in io_recvmsg_prep_multishot()
762 struct io_async_msghdr *kmsg, in io_recvmsg_multishot() argument
769 if (kmsg->namelen) in io_recvmsg_multishot()
770 kmsg->msg.msg_name = &hdr.addr; in io_recvmsg_multishot()
771 kmsg->msg.msg_flags = flags & (MSG_CMSG_CLOEXEC|MSG_CMSG_COMPAT); in io_recvmsg_multishot()
772 kmsg->msg.msg_namelen = 0; in io_recvmsg_multishot()
777 err = sock_recvmsg(sock, &kmsg->msg, flags); in io_recvmsg_multishot()
783 .controllen = kmsg->controllen - kmsg->msg.msg_controllen, in io_recvmsg_multishot()
784 .flags = kmsg->msg.msg_flags & ~MSG_CMSG_COMPAT in io_recvmsg_multishot()
788 if (err > kmsg->payloadlen) in io_recvmsg_multishot()
789 err = kmsg->payloadlen; in io_recvmsg_multishot()
792 if (kmsg->msg.msg_namelen > kmsg->namelen) in io_recvmsg_multishot()
793 copy_len += kmsg->namelen; in io_recvmsg_multishot()
795 copy_len += kmsg->msg.msg_namelen; in io_recvmsg_multishot()
801 hdr.msg.namelen = kmsg->msg.msg_namelen; in io_recvmsg_multishot()
811 return sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_multishot()
812 kmsg->controllen + err; in io_recvmsg_multishot()
818 struct io_async_msghdr iomsg, *kmsg; in io_recvmsg() local
830 kmsg = req->async_data; in io_recvmsg()
835 kmsg = &iomsg; in io_recvmsg()
840 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
843 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
855 ret = io_recvmsg_prep_multishot(kmsg, sr, &buf, &len); in io_recvmsg()
862 iov_iter_ubuf(&kmsg->msg.msg_iter, ITER_DEST, buf, len); in io_recvmsg()
869 kmsg->msg.msg_get_inq = 1; in io_recvmsg()
870 kmsg->msg.msg_inq = -1; in io_recvmsg()
872 ret = io_recvmsg_multishot(sock, sr, kmsg, flags, in io_recvmsg()
876 if (flags & MSG_WAITALL && !kmsg->msg.msg_controllen) in io_recvmsg()
877 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_recvmsg()
879 ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg, in io_recvmsg()
880 kmsg->uaddr, flags); in io_recvmsg()
885 ret = io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
895 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
900 } else if ((flags & MSG_WAITALL) && (kmsg->msg.msg_flags & (MSG_TRUNC | MSG_CTRUNC))) { in io_recvmsg()
911 if (!io_recv_finish(req, &ret, &kmsg->msg, mshot_finished, issue_flags)) in io_recvmsg()
916 if (kmsg->free_iov) in io_recvmsg()
917 kfree(kmsg->free_iov); in io_recvmsg()
921 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
1266 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg_zc() local
1280 kmsg = req->async_data; in io_sendmsg_zc()
1281 kmsg->msg.msg_control_user = sr->msg_control; in io_sendmsg_zc()
1286 kmsg = &iomsg; in io_sendmsg_zc()
1291 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1297 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg_zc()
1299 kmsg->msg.msg_ubuf = &io_notif_to_data(sr->notif)->uarg; in io_sendmsg_zc()
1300 kmsg->msg.sg_from_iter = io_sg_from_iter_iovec; in io_sendmsg_zc()
1301 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg_zc()
1305 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1310 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1317 if (kmsg->free_iov) { in io_sendmsg_zc()
1318 kfree(kmsg->free_iov); in io_sendmsg_zc()
1319 kmsg->free_iov = NULL; in io_sendmsg_zc()