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()
404 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg() local
415 kmsg = req->async_data; in io_sendmsg()
416 kmsg->msg.msg_control_user = sr->msg_control; in io_sendmsg()
421 kmsg = &iomsg; in io_sendmsg()
426 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
432 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg()
434 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg()
438 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
440 kmsg->msg.msg_controllen = 0; in io_sendmsg()
441 kmsg->msg.msg_control = NULL; in io_sendmsg()
444 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg()
451 if (kmsg->free_iov) in io_sendmsg()
452 kfree(kmsg->free_iov); in io_sendmsg()
729 static int io_recvmsg_prep_multishot(struct io_async_msghdr *kmsg, in io_recvmsg_prep_multishot() argument
736 hdr = sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_prep_multishot()
737 kmsg->controllen; in io_recvmsg_prep_multishot()
741 if (kmsg->controllen) { in io_recvmsg_prep_multishot()
742 unsigned long control = ubuf + hdr - kmsg->controllen; in io_recvmsg_prep_multishot()
744 kmsg->msg.msg_control_user = (void __user *) control; in io_recvmsg_prep_multishot()
745 kmsg->msg.msg_controllen = kmsg->controllen; in io_recvmsg_prep_multishot()
750 kmsg->payloadlen = *len = *len - hdr; in io_recvmsg_prep_multishot()
760 struct io_async_msghdr *kmsg, in io_recvmsg_multishot() argument
767 if (kmsg->namelen) in io_recvmsg_multishot()
768 kmsg->msg.msg_name = &hdr.addr; in io_recvmsg_multishot()
769 kmsg->msg.msg_flags = flags & (MSG_CMSG_CLOEXEC|MSG_CMSG_COMPAT); in io_recvmsg_multishot()
770 kmsg->msg.msg_namelen = 0; in io_recvmsg_multishot()
775 err = sock_recvmsg(sock, &kmsg->msg, flags); in io_recvmsg_multishot()
781 .controllen = kmsg->controllen - kmsg->msg.msg_controllen, in io_recvmsg_multishot()
782 .flags = kmsg->msg.msg_flags & ~MSG_CMSG_COMPAT in io_recvmsg_multishot()
786 if (err > kmsg->payloadlen) in io_recvmsg_multishot()
787 err = kmsg->payloadlen; in io_recvmsg_multishot()
790 if (kmsg->msg.msg_namelen > kmsg->namelen) in io_recvmsg_multishot()
791 copy_len += kmsg->namelen; in io_recvmsg_multishot()
793 copy_len += kmsg->msg.msg_namelen; in io_recvmsg_multishot()
799 hdr.msg.namelen = kmsg->msg.msg_namelen; in io_recvmsg_multishot()
809 return sizeof(struct io_uring_recvmsg_out) + kmsg->namelen + in io_recvmsg_multishot()
810 kmsg->controllen + err; in io_recvmsg_multishot()
816 struct io_async_msghdr iomsg, *kmsg; in io_recvmsg() local
828 kmsg = req->async_data; in io_recvmsg()
833 kmsg = &iomsg; in io_recvmsg()
838 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
841 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
853 ret = io_recvmsg_prep_multishot(kmsg, sr, &buf, &len); in io_recvmsg()
860 iov_iter_ubuf(&kmsg->msg.msg_iter, ITER_DEST, buf, len); in io_recvmsg()
867 kmsg->msg.msg_get_inq = 1; in io_recvmsg()
868 kmsg->msg.msg_inq = -1; in io_recvmsg()
870 ret = io_recvmsg_multishot(sock, sr, kmsg, flags, in io_recvmsg()
874 if (flags & MSG_WAITALL && !kmsg->msg.msg_controllen) in io_recvmsg()
875 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_recvmsg()
877 ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg, in io_recvmsg()
878 kmsg->uaddr, flags); in io_recvmsg()
883 ret = io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
893 return io_setup_async_msg(req, kmsg, issue_flags); in io_recvmsg()
898 } else if ((flags & MSG_WAITALL) && (kmsg->msg.msg_flags & (MSG_TRUNC | MSG_CTRUNC))) { in io_recvmsg()
909 if (!io_recv_finish(req, &ret, &kmsg->msg, mshot_finished, issue_flags)) in io_recvmsg()
914 if (kmsg->free_iov) in io_recvmsg()
915 kfree(kmsg->free_iov); in io_recvmsg()
1261 struct io_async_msghdr iomsg, *kmsg; in io_sendmsg_zc() local
1275 kmsg = req->async_data; in io_sendmsg_zc()
1280 kmsg = &iomsg; in io_sendmsg_zc()
1285 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1291 min_ret = iov_iter_count(&kmsg->msg.msg_iter); in io_sendmsg_zc()
1293 kmsg->msg.msg_ubuf = &io_notif_to_data(sr->notif)->uarg; in io_sendmsg_zc()
1294 kmsg->msg.sg_from_iter = io_sg_from_iter_iovec; in io_sendmsg_zc()
1295 ret = __sys_sendmsg_sock(sock, &kmsg->msg, flags); in io_sendmsg_zc()
1299 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1304 return io_setup_async_msg(req, kmsg, issue_flags); in io_sendmsg_zc()
1311 if (kmsg->free_iov) { in io_sendmsg_zc()
1312 kfree(kmsg->free_iov); in io_sendmsg_zc()
1313 kmsg->free_iov = NULL; in io_sendmsg_zc()