flags = sr->msg_flags;
        if (force_nonblock)
                flags |= MSG_DONTWAIT;
 -      if (flags & MSG_WAITALL)
 -              min_ret = iov_iter_count(&kmsg->msg.msg_iter);
  
        kmsg->msg.msg_get_inq = 1;
 -      if (req->flags & REQ_F_APOLL_MULTISHOT)
+       kmsg->msg.msg_inq = -1U;
 +      if (req->flags & REQ_F_APOLL_MULTISHOT) {
                ret = io_recvmsg_multishot(sock, sr, kmsg, flags,
                                           &mshot_finished);
 -      else
 +      } else {
 +              /* disable partial retry for recvmsg with cmsg attached */
 +              if (flags & MSG_WAITALL && !kmsg->msg.msg_controllen)
 +                      min_ret = iov_iter_count(&kmsg->msg.msg_iter);
 +
                ret = __sys_recvmsg_sock(sock, &kmsg->msg, sr->umsg,
                                         kmsg->uaddr, flags);
 +      }
  
        if (ret < min_ret) {
                if (ret == -EAGAIN && force_nonblock) {