|
@@ -819,7 +819,7 @@ done:
|
|
return ret ? ret : copied;
|
|
return ret ? ret : copied;
|
|
}
|
|
}
|
|
|
|
|
|
-static ssize_t macvtap_do_read(struct macvtap_queue *q, struct kiocb *iocb,
|
|
|
|
|
|
+static ssize_t macvtap_do_read(struct macvtap_queue *q,
|
|
const struct iovec *iv, unsigned long len,
|
|
const struct iovec *iv, unsigned long len,
|
|
int noblock)
|
|
int noblock)
|
|
{
|
|
{
|
|
@@ -870,7 +870,7 @@ static ssize_t macvtap_aio_read(struct kiocb *iocb, const struct iovec *iv,
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
|
|
- ret = macvtap_do_read(q, iocb, iv, len, file->f_flags & O_NONBLOCK);
|
|
|
|
|
|
+ ret = macvtap_do_read(q, iv, len, file->f_flags & O_NONBLOCK);
|
|
ret = min_t(ssize_t, ret, len); /* XXX copied from tun.c. Why? */
|
|
ret = min_t(ssize_t, ret, len); /* XXX copied from tun.c. Why? */
|
|
out:
|
|
out:
|
|
return ret;
|
|
return ret;
|
|
@@ -1102,7 +1102,7 @@ static int macvtap_recvmsg(struct kiocb *iocb, struct socket *sock,
|
|
int ret;
|
|
int ret;
|
|
if (flags & ~(MSG_DONTWAIT|MSG_TRUNC))
|
|
if (flags & ~(MSG_DONTWAIT|MSG_TRUNC))
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
- ret = macvtap_do_read(q, iocb, m->msg_iov, total_len,
|
|
|
|
|
|
+ ret = macvtap_do_read(q, m->msg_iov, total_len,
|
|
flags & MSG_DONTWAIT);
|
|
flags & MSG_DONTWAIT);
|
|
if (ret > total_len) {
|
|
if (ret > total_len) {
|
|
m->msg_flags |= MSG_TRUNC;
|
|
m->msg_flags |= MSG_TRUNC;
|