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()
305 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg() local
316 kmsg = req->async_data; in io_sendmsg()
317 kmsg->msg.msg_control_user = sr->msg_control; in io_sendmsg()
322 kmsg = &iomsg; in io_sendmsg()
327 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
333 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg()
335 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg()
339 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
341 kmsg->msg.msg_controllen = 0; in io_sendmsg()
342 kmsg->msg.msg_control = NULL; in io_sendmsg()
345 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
352 if (kmsg->free_iov) in io_sendmsg()
353 kfree(kmsg->free_iov); in io_sendmsg()
695 static int io_recvmsg_prep_multishot(struct io_async_msghdr *kmsg, in io_recvmsg_prep_multishot() argument
702 hdr = sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_prep_multishot()
703 kmsg->controllen; in io_recvmsg_prep_multishot()
707 if (kmsg->controllen) { in io_recvmsg_prep_multishot()
708 unsigned long control = ubuf + hdr - kmsg->controllen; in io_recvmsg_prep_multishot()
710 kmsg->msg.msg_control_user = (void __user *) control; in io_recvmsg_prep_multishot()
711 kmsg->msg.msg_controllen = kmsg->controllen; in io_recvmsg_prep_multishot()
716 kmsg->payloadlen = *len = *len - hdr; in io_recvmsg_prep_multishot()
726 struct io_async_msghdr *kmsg, in io_recvmsg_multishot() argument
733 if (kmsg->namelen) in io_recvmsg_multishot()
734 kmsg->msg.msg_name = &hdr.addr; in io_recvmsg_multishot()
735 kmsg->msg.msg_flags = flags & (MSG_CMSG_CLOEXEC|MSG_CMSG_COMPAT); in io_recvmsg_multishot()
736 kmsg->msg.msg_namelen = 0; in io_recvmsg_multishot()
741 err = sock_recvmsg(sock, &kmsg->msg, flags); in io_recvmsg_multishot()
747 .controllen = kmsg->controllen - kmsg->msg.msg_controllen, in io_recvmsg_multishot()
748 .flags = kmsg->msg.msg_flags & ~MSG_CMSG_COMPAT in io_recvmsg_multishot()
752 if (err > kmsg->payloadlen) in io_recvmsg_multishot()
753 err = kmsg->payloadlen; in io_recvmsg_multishot()
756 if (kmsg->msg.msg_namelen > kmsg->namelen) in io_recvmsg_multishot()
757 copy_len += kmsg->namelen; in io_recvmsg_multishot()
759 copy_len += kmsg->msg.msg_namelen; in io_recvmsg_multishot()
765 hdr.msg.namelen = kmsg->msg.msg_namelen; in io_recvmsg_multishot()
775 return sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_multishot()
776 kmsg->controllen + err; in io_recvmsg_multishot()
782 struct io_async_msghdr iomsg, *kmsg; in io_recvmsg() local
794 kmsg = req->async_data; in io_recvmsg()
799 kmsg = &iomsg; in io_recvmsg()
804 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
807 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
819 ret = io_recvmsg_prep_multishot(kmsg, sr, &buf, &len); in io_recvmsg()
826 iov_iter_ubuf(&kmsg->msg.msg_iter, ITER_DEST, buf, len); in io_recvmsg()
833 kmsg->msg.msg_get_inq = 1; in io_recvmsg()
834 kmsg->msg.msg_inq = -1; in io_recvmsg()
836 ret = io_recvmsg_multishot(sock, sr, kmsg, flags, in io_recvmsg()
840 if (flags & MSG_WAITALL && !kmsg->msg.msg_controllen) in io_recvmsg()
841 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_recvmsg()
843 ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg, in io_recvmsg()
844 kmsg->uaddr, flags); in io_recvmsg()
849 ret = io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
859 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
864 } else if ((flags & MSG_WAITALL) && (kmsg->msg.msg_flags & (MSG_TRUNC | MSG_CTRUNC))) { in io_recvmsg()
875 if (!io_recv_finish(req, &ret, &kmsg->msg, mshot_finished, issue_flags)) in io_recvmsg()
880 if (kmsg->free_iov) in io_recvmsg()
881 kfree(kmsg->free_iov); in io_recvmsg()
1227 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg_zc() local
1241 kmsg = req->async_data; in io_sendmsg_zc()
1246 kmsg = &iomsg; in io_sendmsg_zc()
1251 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1257 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg_zc()
1259 kmsg->msg.msg_ubuf = &io_notif_to_data(sr->notif)->uarg; in io_sendmsg_zc()
1260 kmsg->msg.sg_from_iter = io_sg_from_iter_iovec; in io_sendmsg_zc()
1261 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg_zc()
1265 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1270 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1277 if (kmsg->free_iov) { in io_sendmsg_zc()
1278 kfree(kmsg->free_iov); in io_sendmsg_zc()
1279 kmsg->free_iov = NULL; in io_sendmsg_zc()