Lines Matching refs:sr
202 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_sendmsg_copy_hdr() local
207 ret = sendmsg_copy_msghdr(&iomsg->msg, sr->umsg, sr->msg_flags, in io_sendmsg_copy_hdr()
210 sr->msg_control = iomsg->msg.msg_control_user; in io_sendmsg_copy_hdr()
233 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_setup_async_addr() local
236 if (!sr->addr || req_has_async_data(req)) in io_setup_async_addr()
266 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_sendmsg_prep() local
271 sr->addr = u64_to_user_ptr(READ_ONCE(sqe->addr2)); in io_sendmsg_prep()
272 sr->addr_len = READ_ONCE(sqe->addr_len); in io_sendmsg_prep()
277 sr->umsg = u64_to_user_ptr(READ_ONCE(sqe->addr)); in io_sendmsg_prep()
278 sr->len = READ_ONCE(sqe->len); in io_sendmsg_prep()
279 sr->flags = READ_ONCE(sqe->ioprio); in io_sendmsg_prep()
280 if (sr->flags & ~IORING_RECVSEND_POLL_FIRST) in io_sendmsg_prep()
282 sr->msg_flags = READ_ONCE(sqe->msg_flags) | MSG_NOSIGNAL; in io_sendmsg_prep()
283 if (sr->msg_flags & MSG_DONTWAIT) in io_sendmsg_prep()
288 sr->msg_flags |= MSG_CMSG_COMPAT; in io_sendmsg_prep()
290 sr->done_io = 0; in io_sendmsg_prep()
296 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_sendmsg() local
309 kmsg->msg.msg_control_user = sr->msg_control; in io_sendmsg()
318 (sr->flags & IORING_RECVSEND_POLL_FIRST)) in io_sendmsg()
321 flags = sr->msg_flags; in io_sendmsg()
335 sr->done_io += ret; in io_sendmsg()
349 ret += sr->done_io; in io_sendmsg()
350 else if (sr->done_io) in io_sendmsg()
351 ret = sr->done_io; in io_sendmsg()
359 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_send() local
372 if (sr->addr) { in io_send()
378 ret = move_addr_to_kernel(sr->addr, sr->addr_len, &__address); in io_send()
383 msg.msg_namelen = sr->addr_len; in io_send()
387 (sr->flags & IORING_RECVSEND_POLL_FIRST)) in io_send()
394 ret = import_ubuf(ITER_SOURCE, sr->buf, sr->len, &msg.msg_iter); in io_send()
398 flags = sr->msg_flags; in io_send()
412 sr->len -= ret; in io_send()
413 sr->buf += ret; in io_send()
414 sr->done_io += ret; in io_send()
423 ret += sr->done_io; in io_send()
424 else if (sr->done_io) in io_send()
425 ret = sr->done_io; in io_send()
448 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in __io_recvmsg_copy_hdr() local
452 if (copy_from_user(&msg, sr->umsg, sizeof(*sr->umsg))) in __io_recvmsg_copy_hdr()
461 sr->len = iomsg->fast_iov[0].iov_len = 0; in __io_recvmsg_copy_hdr()
469 sr->len = iomsg->fast_iov[0].iov_len; in __io_recvmsg_copy_hdr()
495 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in __io_compat_recvmsg_copy_hdr() local
500 if (copy_from_user(&msg, sr->umsg_compat, sizeof(msg))) in __io_compat_recvmsg_copy_hdr()
513 sr->len = 0; in __io_compat_recvmsg_copy_hdr()
523 sr->len = clen; in __io_compat_recvmsg_copy_hdr()
575 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_recvmsg_prep() local
580 sr->umsg = u64_to_user_ptr(READ_ONCE(sqe->addr)); in io_recvmsg_prep()
581 sr->len = READ_ONCE(sqe->len); in io_recvmsg_prep()
582 sr->flags = READ_ONCE(sqe->ioprio); in io_recvmsg_prep()
583 if (sr->flags & ~(RECVMSG_FLAGS)) in io_recvmsg_prep()
585 sr->msg_flags = READ_ONCE(sqe->msg_flags); in io_recvmsg_prep()
586 if (sr->msg_flags & MSG_DONTWAIT) in io_recvmsg_prep()
588 if (sr->msg_flags & MSG_ERRQUEUE) in io_recvmsg_prep()
590 if (sr->flags & IORING_RECV_MULTISHOT) { in io_recvmsg_prep()
593 if (sr->msg_flags & MSG_WAITALL) in io_recvmsg_prep()
595 if (req->opcode == IORING_OP_RECV && sr->len) in io_recvmsg_prep()
606 sr->buf_group = req->buf_index; in io_recvmsg_prep()
611 sr->msg_flags |= MSG_CMSG_COMPAT; in io_recvmsg_prep()
613 sr->done_io = 0; in io_recvmsg_prep()
619 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_recv_prep_retry() local
621 sr->done_io = 0; in io_recv_prep_retry()
622 sr->len = 0; /* get from the provided buffer */ in io_recv_prep_retry()
623 req->buf_index = sr->buf_group; in io_recv_prep_retry()
675 struct io_sr_msg *sr, void __user **buf, in io_recvmsg_prep_multishot() argument
693 sr->buf = *buf; /* stash for later copy */ in io_recvmsg_prep_multishot()
760 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_recvmsg() local
782 (sr->flags & IORING_RECVSEND_POLL_FIRST)) in io_recvmsg()
791 size_t len = sr->len; in io_recvmsg()
798 ret = io_recvmsg_prep_multishot(kmsg, sr, &buf, &len); in io_recvmsg()
808 flags = sr->msg_flags; in io_recvmsg()
815 ret = io_recvmsg_multishot(sock, sr, kmsg, flags, in io_recvmsg()
822 ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg, in io_recvmsg()
836 sr->done_io += ret; in io_recvmsg()
848 ret += sr->done_io; in io_recvmsg()
849 else if (sr->done_io) in io_recvmsg()
850 ret = sr->done_io; in io_recvmsg()
870 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_recv() local
876 size_t len = sr->len; in io_recv()
879 (sr->flags & IORING_RECVSEND_POLL_FIRST)) in io_recv()
904 sr->buf = buf; in io_recv()
907 ret = import_ubuf(ITER_DEST, sr->buf, len, &msg.msg_iter); in io_recv()
914 flags = sr->msg_flags; in io_recv()
931 sr->len -= ret; in io_recv()
932 sr->buf += ret; in io_recv()
933 sr->done_io += ret; in io_recv()
946 ret += sr->done_io; in io_recv()
947 else if (sr->done_io) in io_recv()
948 ret = sr->done_io; in io_recv()
1204 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_sendmsg_zc() local
1210 io_notif_set_extended(sr->notif); in io_sendmsg_zc()
1228 (sr->flags & IORING_RECVSEND_POLL_FIRST)) in io_sendmsg_zc()
1231 flags = sr->msg_flags | MSG_ZEROCOPY; in io_sendmsg_zc()
1237 kmsg->msg.msg_ubuf = &io_notif_to_data(sr->notif)->uarg; in io_sendmsg_zc()
1246 sr->done_io += ret; in io_sendmsg_zc()
1262 ret += sr->done_io; in io_sendmsg_zc()
1263 else if (sr->done_io) in io_sendmsg_zc()
1264 ret = sr->done_io; in io_sendmsg_zc()
1271 io_notif_flush(sr->notif); in io_sendmsg_zc()
1280 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg); in io_sendrecv_fail() local
1283 req->cqe.res = sr->done_io; in io_sendrecv_fail()