Lines Matching refs:sr

199 	struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
203 if (copy_from_user(msg, sr->umsg_compat, sizeof(*msg)))
212 sr->len = 0;
222 sr->len = clen;
242 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
245 if (!user_access_begin(sr->umsg, sizeof(*sr->umsg)))
249 unsafe_get_user(msg->msg_name, &sr->umsg->msg_name, ua_end);
250 unsafe_get_user(msg->msg_namelen, &sr->umsg->msg_namelen, ua_end);
251 unsafe_get_user(msg->msg_iov, &sr->umsg->msg_iov, ua_end);
252 unsafe_get_user(msg->msg_iovlen, &sr->umsg->msg_iovlen, ua_end);
253 unsafe_get_user(msg->msg_control, &sr->umsg->msg_control, ua_end);
254 unsafe_get_user(msg->msg_controllen, &sr->umsg->msg_controllen, ua_end);
259 sr->len = iomsg->fast_iov[0].iov_len = 0;
271 sr->len = iomsg->fast_iov[0].iov_len;
293 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
319 sr->msg_control = iomsg->msg.msg_control_user;
345 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
348 if (!sr->addr || req_has_async_data(req))
359 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
362 sr->done_io = 0;
380 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
382 sr->done_io = 0;
387 sr->addr = u64_to_user_ptr(READ_ONCE(sqe->addr2));
388 sr->addr_len = READ_ONCE(sqe->addr_len);
393 sr->umsg = u64_to_user_ptr(READ_ONCE(sqe->addr));
394 sr->len = READ_ONCE(sqe->len);
395 sr->flags = READ_ONCE(sqe->ioprio);
396 if (sr->flags & ~IORING_RECVSEND_POLL_FIRST)
398 sr->msg_flags = READ_ONCE(sqe->msg_flags) | MSG_NOSIGNAL;
399 if (sr->msg_flags & MSG_DONTWAIT)
404 sr->msg_flags |= MSG_CMSG_COMPAT;
422 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
435 kmsg->msg.msg_control_user = sr->msg_control;
444 (sr->flags & IORING_RECVSEND_POLL_FIRST))
447 flags = sr->msg_flags;
461 sr->done_io += ret;
471 ret += sr->done_io;
472 else if (sr->done_io)
473 ret = sr->done_io;
481 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
494 if (sr->addr) {
500 ret = move_addr_to_kernel(sr->addr, sr->addr_len, &__address);
505 msg.msg_namelen = sr->addr_len;
509 (sr->flags & IORING_RECVSEND_POLL_FIRST))
516 ret = import_ubuf(ITER_SOURCE, sr->buf, sr->len, &msg.msg_iter);
520 flags = sr->msg_flags;
534 sr->len -= ret;
535 sr->buf += ret;
536 sr->done_io += ret;
545 ret += sr->done_io;
546 else if (sr->done_io)
547 ret = sr->done_io;
616 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
620 sr->done_io = 0;
634 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
636 sr->done_io = 0;
641 sr->umsg = u64_to_user_ptr(READ_ONCE(sqe->addr));
642 sr->len = READ_ONCE(sqe->len);
643 sr->flags = READ_ONCE(sqe->ioprio);
644 if (sr->flags & ~(RECVMSG_FLAGS))
646 sr->msg_flags = READ_ONCE(sqe->msg_flags);
647 if (sr->msg_flags & MSG_DONTWAIT)
649 if (sr->msg_flags & MSG_ERRQUEUE)
651 if (sr->flags & IORING_RECV_MULTISHOT) {
654 if (sr->msg_flags & MSG_WAITALL)
656 if (req->opcode == IORING_OP_RECV && sr->len)
667 sr->buf_group = req->buf_index;
672 sr->msg_flags |= MSG_CMSG_COMPAT;
674 sr->nr_multishot_loops = 0;
680 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
683 sr->done_io = 0;
684 sr->len = 0; /* get from the provided buffer */
685 req->buf_index = sr->buf_group;
711 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
717 if (sr->nr_multishot_loops++ < MULTISHOT_MAX_RETRY)
720 sr->nr_multishot_loops = 0;
741 struct io_sr_msg *sr, void __user **buf,
759 sr->buf = *buf; /* stash for later copy */
826 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
848 (sr->flags & IORING_RECVSEND_POLL_FIRST))
851 flags = sr->msg_flags;
858 size_t len = sr->len;
865 ret = io_recvmsg_prep_multishot(kmsg, sr, &buf, &len);
878 ret = io_recvmsg_multishot(sock, sr, kmsg, flags,
885 ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg,
899 sr->done_io += ret;
911 ret += sr->done_io;
912 else if (sr->done_io)
913 ret = sr->done_io;
930 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
936 size_t len = sr->len;
939 (sr->flags & IORING_RECVSEND_POLL_FIRST))
954 flags = sr->msg_flags;
965 sr->buf = buf;
966 sr->len = len;
969 ret = import_ubuf(ITER_DEST, sr->buf, len, &msg.msg_iter);
990 sr->len -= ret;
991 sr->buf += ret;
992 sr->done_io += ret;
1005 ret += sr->done_io;
1006 else if (sr->done_io)
1007 ret = sr->done_io;
1263 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
1269 io_notif_set_extended(sr->notif);
1279 kmsg->msg.msg_control_user = sr->msg_control;
1288 (sr->flags & IORING_RECVSEND_POLL_FIRST))
1291 flags = sr->msg_flags | MSG_ZEROCOPY;
1297 kmsg->msg.msg_ubuf = &io_notif_to_data(sr->notif)->uarg;
1306 sr->done_io += ret;
1322 ret += sr->done_io;
1323 else if (sr->done_io)
1324 ret = sr->done_io;
1331 io_notif_flush(sr->notif);
1340 struct io_sr_msg *sr = io_kiocb_to_cmd(req, struct io_sr_msg);
1342 if (sr->done_io)
1343 req->cqe.res = sr->done_io;