Lines Matching refs:sr
212 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
216 if (copy_from_user(msg, sr->umsg_compat, sizeof(*msg)))
225 sr->len = 0;
235 sr->len = clen;
255 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
258 if (copy_from_user(msg, sr->umsg, sizeof(*sr->umsg)))
263 sr->len = iomsg->fast_iov[0].iov_len = 0;
272 sr->len = iomsg->fast_iov[0].iov_len;
291 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
317 sr->msg_control = iomsg->msg.msg_control_user;
340 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
343 if (!sr->addr || req_has_async_data(req))
373 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
378 sr->addr = u64_to_user_ptr(READ_ONCE(sqe->addr2));
379 sr->addr_len = READ_ONCE(sqe->addr_len);
384 sr->umsg = u64_to_user_ptr(READ_ONCE(sqe->addr));
385 sr->len = READ_ONCE(sqe->len);
386 sr->flags = READ_ONCE(sqe->ioprio);
387 if (sr->flags & ~IORING_RECVSEND_POLL_FIRST)
389 sr->msg_flags = READ_ONCE(sqe->msg_flags) | MSG_NOSIGNAL;
390 if (sr->msg_flags & MSG_DONTWAIT)
395 sr->msg_flags |= MSG_CMSG_COMPAT;
397 sr->done_io = 0;
403 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
416 kmsg->msg.msg_control_user = sr->msg_control;
425 (sr->flags & IORING_RECVSEND_POLL_FIRST))
428 flags = sr->msg_flags;
442 sr->done_io += ret;
456 ret += sr->done_io;
457 else if (sr->done_io)
458 ret = sr->done_io;
466 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
479 if (sr->addr) {
485 ret = move_addr_to_kernel(sr->addr, sr->addr_len, &__address);
490 msg.msg_namelen = sr->addr_len;
494 (sr->flags & IORING_RECVSEND_POLL_FIRST))
501 ret = import_ubuf(ITER_SOURCE, sr->buf, sr->len, &msg.msg_iter);
505 flags = sr->msg_flags;
519 sr->len -= ret;
520 sr->buf += ret;
521 sr->done_io += ret;
530 ret += sr->done_io;
531 else if (sr->done_io)
532 ret = sr->done_io;
617 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
622 sr->umsg = u64_to_user_ptr(READ_ONCE(sqe->addr));
623 sr->len = READ_ONCE(sqe->len);
624 sr->flags = READ_ONCE(sqe->ioprio);
625 if (sr->flags & ~(RECVMSG_FLAGS))
627 sr->msg_flags = READ_ONCE(sqe->msg_flags);
628 if (sr->msg_flags & MSG_DONTWAIT)
630 if (sr->msg_flags & MSG_ERRQUEUE)
632 if (sr->flags & IORING_RECV_MULTISHOT) {
635 if (sr->msg_flags & MSG_WAITALL)
637 if (req->opcode == IORING_OP_RECV && sr->len)
648 sr->buf_group = req->buf_index;
653 sr->msg_flags |= MSG_CMSG_COMPAT;
655 sr->done_io = 0;
656 sr->nr_multishot_loops = 0;
662 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
664 sr->done_io = 0;
665 sr->len = 0; /* get from the provided buffer */
666 req->buf_index = sr->buf_group;
700 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
706 if (sr->nr_multishot_loops++ < MULTISHOT_MAX_RETRY)
709 sr->nr_multishot_loops = 0;
730 struct io_sr_msg *sr, void __user **buf,
748 sr->buf = *buf; /* stash for later copy */
815 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
837 (sr->flags & IORING_RECVSEND_POLL_FIRST))
846 size_t len = sr->len;
853 ret = io_recvmsg_prep_multishot(kmsg, sr, &buf, &len);
863 flags = sr->msg_flags;
870 ret = io_recvmsg_multishot(sock, sr, kmsg, flags,
877 ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg,
891 sr->done_io += ret;
903 ret += sr->done_io;
904 else if (sr->done_io)
905 ret = sr->done_io;
926 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
932 size_t len = sr->len;
935 (sr->flags & IORING_RECVSEND_POLL_FIRST))
960 sr->buf = buf;
961 sr->len = len;
964 ret = import_ubuf(ITER_DEST, sr->buf, len, &msg.msg_iter);
971 flags = sr->msg_flags;
988 sr->len -= ret;
989 sr->buf += ret;
990 sr->done_io += ret;
1003 ret += sr->done_io;
1004 else if (sr->done_io)
1005 ret = sr->done_io;
1261 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
1267 io_notif_set_extended(sr->notif);
1285 (sr->flags & IORING_RECVSEND_POLL_FIRST))
1288 flags = sr->msg_flags | MSG_ZEROCOPY;
1294 kmsg->msg.msg_ubuf = &io_notif_to_data(sr->notif)->uarg;
1303 sr->done_io += ret;
1319 ret += sr->done_io;
1320 else if (sr->done_io)
1321 ret = sr->done_io;
1328 io_notif_flush(sr->notif);
1337 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
1340 req->cqe.res = sr->done_io;