Lines Matching full:kmsg
152 struct io_async_msghdr *kmsg, in io_setup_async_msg() argument
161 kfree(kmsg->free_iov); in io_setup_async_msg()
165 memcpy(async_msg, kmsg, sizeof(*kmsg)); in io_setup_async_msg()
169 if (!kmsg->free_iov) { in io_setup_async_msg()
170 size_t fast_idx = kmsg->msg.msg_iter.iov - kmsg->fast_iov; in io_setup_async_msg()
271 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg() local
282 kmsg = req->async_data; in io_sendmsg()
287 kmsg = &iomsg; in io_sendmsg()
292 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
298 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg()
300 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg()
304 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
308 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
315 if (kmsg->free_iov) in io_sendmsg()
316 kfree(kmsg->free_iov); in io_sendmsg()
623 static int io_recvmsg_prep_multishot(struct io_async_msghdr *kmsg, in io_recvmsg_prep_multishot() argument
630 hdr = sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_prep_multishot()
631 kmsg->controllen; in io_recvmsg_prep_multishot()
635 if (kmsg->controllen) { in io_recvmsg_prep_multishot()
636 unsigned long control = ubuf + hdr - kmsg->controllen; in io_recvmsg_prep_multishot()
638 kmsg->msg.msg_control_user = (void __user *) control; in io_recvmsg_prep_multishot()
639 kmsg->msg.msg_controllen = kmsg->controllen; in io_recvmsg_prep_multishot()
644 kmsg->payloadlen = *len = *len - hdr; in io_recvmsg_prep_multishot()
654 struct io_async_msghdr *kmsg, in io_recvmsg_multishot() argument
661 if (kmsg->namelen) in io_recvmsg_multishot()
662 kmsg->msg.msg_name = &hdr.addr; in io_recvmsg_multishot()
663 kmsg->msg.msg_flags = flags & (MSG_CMSG_CLOEXEC|MSG_CMSG_COMPAT); in io_recvmsg_multishot()
664 kmsg->msg.msg_namelen = 0; in io_recvmsg_multishot()
669 err = sock_recvmsg(sock, &kmsg->msg, flags); in io_recvmsg_multishot()
675 .controllen = kmsg->controllen - kmsg->msg.msg_controllen, in io_recvmsg_multishot()
676 .flags = kmsg->msg.msg_flags & ~MSG_CMSG_COMPAT in io_recvmsg_multishot()
680 if (err > kmsg->payloadlen) in io_recvmsg_multishot()
681 err = kmsg->payloadlen; in io_recvmsg_multishot()
684 if (kmsg->msg.msg_namelen > kmsg->namelen) in io_recvmsg_multishot()
685 copy_len += kmsg->namelen; in io_recvmsg_multishot()
687 copy_len += kmsg->msg.msg_namelen; in io_recvmsg_multishot()
693 hdr.msg.namelen = kmsg->msg.msg_namelen; in io_recvmsg_multishot()
703 return sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_multishot()
704 kmsg->controllen + err; in io_recvmsg_multishot()
710 struct io_async_msghdr iomsg, *kmsg; in io_recvmsg() local
723 kmsg = req->async_data; in io_recvmsg()
728 kmsg = &iomsg; in io_recvmsg()
733 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
745 ret = io_recvmsg_prep_multishot(kmsg, sr, &buf, &len); in io_recvmsg()
752 kmsg->fast_iov[0].iov_base = buf; in io_recvmsg()
753 kmsg->fast_iov[0].iov_len = len; in io_recvmsg()
754 iov_iter_init(&kmsg->msg.msg_iter, READ, kmsg->fast_iov, 1, in io_recvmsg()
762 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_recvmsg()
764 kmsg->msg.msg_get_inq = 1; in io_recvmsg()
766 ret = io_recvmsg_multishot(sock, sr, kmsg, flags, in io_recvmsg()
769 ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg, in io_recvmsg()
770 kmsg->uaddr, flags); in io_recvmsg()
774 ret = io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
784 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
789 } else if ((flags & MSG_WAITALL) && (kmsg->msg.msg_flags & (MSG_TRUNC | MSG_CTRUNC))) { in io_recvmsg()
801 if (kmsg->msg.msg_inq) in io_recvmsg()
810 if (kmsg->free_iov) in io_recvmsg()
811 kfree(kmsg->free_iov); in io_recvmsg()
1146 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg_zc() local
1158 kmsg = req->async_data; in io_sendmsg_zc()
1163 kmsg = &iomsg; in io_sendmsg_zc()
1168 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1174 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg_zc()
1176 kmsg->msg.msg_ubuf = &io_notif_to_data(sr->notif)->uarg; in io_sendmsg_zc()
1177 kmsg->msg.sg_from_iter = io_sg_from_iter_iovec; in io_sendmsg_zc()
1178 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg_zc()
1182 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1187 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1194 if (kmsg->free_iov) { in io_sendmsg_zc()
1195 kfree(kmsg->free_iov); in io_sendmsg_zc()
1196 kmsg->free_iov = NULL; in io_sendmsg_zc()