diff options
author | Jason Wang <jasowang@redhat.com> | 2014-11-20 03:31:05 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-21 14:59:19 -0500 |
commit | 7cc76f51508219a74dca835745e4f84393820017 (patch) | |
tree | ce85b76a4947f86157ae0272dda1e67fd766fea3 /drivers/net/macvtap.c | |
parent | 914efb02befeedbd71a6f115c9d2fb38a34af04d (diff) |
macvtap: advance iov iterator when needed in macvtap_put_user()
When mergeable buffer is used, vnet_hdr_sz is greater than sizeof struct
virtio_net_hdr. So we need advance the iov iterators in this case.
Fixes 6c36d2e26cda1ad3e2c4b90dd843825fc62fe5b4 ("macvtap: Use iovec iterators")
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/macvtap.c')
-rw-r--r-- | drivers/net/macvtap.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c index cea99d4a8263..42a80d3de839 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c | |||
@@ -797,6 +797,8 @@ static ssize_t macvtap_put_user(struct macvtap_queue *q, | |||
797 | if (copy_to_iter(&vnet_hdr, sizeof(vnet_hdr), iter) != | 797 | if (copy_to_iter(&vnet_hdr, sizeof(vnet_hdr), iter) != |
798 | sizeof(vnet_hdr)) | 798 | sizeof(vnet_hdr)) |
799 | return -EFAULT; | 799 | return -EFAULT; |
800 | |||
801 | iov_iter_advance(iter, vnet_hdr_len - sizeof(vnet_hdr)); | ||
800 | } | 802 | } |
801 | total = vnet_hdr_len; | 803 | total = vnet_hdr_len; |
802 | total += skb->len; | 804 | total += skb->len; |