aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Wang <jasowang@redhat.com>2018-05-21 23:44:29 -0400
committerDavid S. Miller <davem@davemloft.net>2018-05-23 13:36:19 -0400
commit5d458a13dd59d04b4d6658a6d5b94d42732b15ae (patch)
tree27fb76cef17f55beb1c8c498f63849da396e5663
parent6890418bbb780f0ee9cf124055afa79777f1b4f1 (diff)
virtio-net: correctly transmit XDP buff after linearizing
We should not go for the error path after successfully transmitting a XDP buffer after linearizing. Since the error path may try to pop and drop next packet and increase the drop counters. Fixing this by simply drop the refcnt of original page and go for xmit path. Fixes: 72979a6c3590 ("virtio_net: xdp, add slowpath case for non contiguous buffers") Cc: John Fastabend <john.fastabend@gmail.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/virtio_net.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index c15d240f643f..6260d6549ee8 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -775,7 +775,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,
775 } 775 }
776 *xdp_xmit = true; 776 *xdp_xmit = true;
777 if (unlikely(xdp_page != page)) 777 if (unlikely(xdp_page != page))
778 goto err_xdp; 778 put_page(page);
779 rcu_read_unlock(); 779 rcu_read_unlock();
780 goto xdp_xmit; 780 goto xdp_xmit;
781 case XDP_REDIRECT: 781 case XDP_REDIRECT: