Lines Matching full:kmsg
170 struct io_async_msghdr *kmsg, in io_setup_async_msg() argument
179 kfree(kmsg->free_iov); in io_setup_async_msg()
183 memcpy(async_msg, kmsg, sizeof(*kmsg)); in io_setup_async_msg()
191 if (iter_is_iovec(&kmsg->msg.msg_iter) && !kmsg->free_iov) { in io_setup_async_msg()
192 size_t fast_idx = iter_iov(&kmsg->msg.msg_iter) - kmsg->fast_iov; in io_setup_async_msg()
297 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg() local
308 kmsg = req->async_data; in io_sendmsg()
309 kmsg->msg.msg_control_user = sr->msg_control; in io_sendmsg()
314 kmsg = &iomsg; in io_sendmsg()
319 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
325 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg()
327 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg()
331 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
333 kmsg->msg.msg_controllen = 0; in io_sendmsg()
334 kmsg->msg.msg_control = NULL; in io_sendmsg()
337 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
344 if (kmsg->free_iov) in io_sendmsg()
345 kfree(kmsg->free_iov); in io_sendmsg()
674 static int io_recvmsg_prep_multishot(struct io_async_msghdr *kmsg, in io_recvmsg_prep_multishot() argument
681 hdr = sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_prep_multishot()
682 kmsg->controllen; in io_recvmsg_prep_multishot()
686 if (kmsg->controllen) { in io_recvmsg_prep_multishot()
687 unsigned long control = ubuf + hdr - kmsg->controllen; in io_recvmsg_prep_multishot()
689 kmsg->msg.msg_control_user = (void __user *) control; in io_recvmsg_prep_multishot()
690 kmsg->msg.msg_controllen = kmsg->controllen; in io_recvmsg_prep_multishot()
695 kmsg->payloadlen = *len = *len - hdr; in io_recvmsg_prep_multishot()
705 struct io_async_msghdr *kmsg, in io_recvmsg_multishot() argument
712 if (kmsg->namelen) in io_recvmsg_multishot()
713 kmsg->msg.msg_name = &hdr.addr; in io_recvmsg_multishot()
714 kmsg->msg.msg_flags = flags & (MSG_CMSG_CLOEXEC|MSG_CMSG_COMPAT); in io_recvmsg_multishot()
715 kmsg->msg.msg_namelen = 0; in io_recvmsg_multishot()
720 err = sock_recvmsg(sock, &kmsg->msg, flags); in io_recvmsg_multishot()
726 .controllen = kmsg->controllen - kmsg->msg.msg_controllen, in io_recvmsg_multishot()
727 .flags = kmsg->msg.msg_flags & ~MSG_CMSG_COMPAT in io_recvmsg_multishot()
731 if (err > kmsg->payloadlen) in io_recvmsg_multishot()
732 err = kmsg->payloadlen; in io_recvmsg_multishot()
735 if (kmsg->msg.msg_namelen > kmsg->namelen) in io_recvmsg_multishot()
736 copy_len += kmsg->namelen; in io_recvmsg_multishot()
738 copy_len += kmsg->msg.msg_namelen; in io_recvmsg_multishot()
744 hdr.msg.namelen = kmsg->msg.msg_namelen; in io_recvmsg_multishot()
754 return sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_multishot()
755 kmsg->controllen + err; in io_recvmsg_multishot()
761 struct io_async_msghdr iomsg, *kmsg; in io_recvmsg() local
773 kmsg = req->async_data; in io_recvmsg()
778 kmsg = &iomsg; in io_recvmsg()
783 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
786 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
798 ret = io_recvmsg_prep_multishot(kmsg, sr, &buf, &len); in io_recvmsg()
805 iov_iter_ubuf(&kmsg->msg.msg_iter, ITER_DEST, buf, len); in io_recvmsg()
812 kmsg->msg.msg_get_inq = 1; in io_recvmsg()
813 kmsg->msg.msg_inq = -1; in io_recvmsg()
815 ret = io_recvmsg_multishot(sock, sr, kmsg, flags, in io_recvmsg()
819 if (flags & MSG_WAITALL && !kmsg->msg.msg_controllen) in io_recvmsg()
820 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_recvmsg()
822 ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg, in io_recvmsg()
823 kmsg->uaddr, flags); in io_recvmsg()
828 ret = io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
838 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
843 } else if ((flags & MSG_WAITALL) && (kmsg->msg.msg_flags & (MSG_TRUNC | MSG_CTRUNC))) { in io_recvmsg()
854 if (!io_recv_finish(req, &ret, &kmsg->msg, mshot_finished, issue_flags)) in io_recvmsg()
859 if (kmsg->free_iov) in io_recvmsg()
860 kfree(kmsg->free_iov); in io_recvmsg()
1205 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg_zc() local
1219 kmsg = req->async_data; in io_sendmsg_zc()
1224 kmsg = &iomsg; in io_sendmsg_zc()
1229 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1235 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg_zc()
1237 kmsg->msg.msg_ubuf = &io_notif_to_data(sr->notif)->uarg; in io_sendmsg_zc()
1238 kmsg->msg.sg_from_iter = io_sg_from_iter_iovec; in io_sendmsg_zc()
1239 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg_zc()
1243 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1248 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1255 if (kmsg->free_iov) { in io_sendmsg_zc()
1256 kfree(kmsg->free_iov); in io_sendmsg_zc()
1257 kmsg->free_iov = NULL; in io_sendmsg_zc()