virtio-net: correctly update XDP_TX counters
authorJason Wang <jasowang@redhat.com>
Tue, 31 Jul 2018 09:43:38 +0000 (17:43 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 31 Jul 2018 17:02:01 +0000 (10:02 -0700)
commitca9e83b4a55bfa1cc1395b48c3bf70381833526b
tree799f43a467e6825725d957993154a84365411af7
parent6293e4d674d0f6cb01cd19307dd477988776c521
virtio-net: correctly update XDP_TX counters

Commit 5b8f3c8d30a6 ("virtio_net: Add XDP related stats") tries to
count TX XDP stats in virtnet_receive(). This will cause several
issues:

- virtnet_xdp_sq() was called without checking whether or not XDP is
  set. This may cause out of bound access when there's no enough txq
  for XDP.
- Stats were updated even if there's no XDP/XDP_TX.

Fixing this by reusing virtnet_xdp_xmit() for XDP_TX which can counts
TX XDP counter itself and remove the unnecessary tx stats embedded in
rx stats.

Reported-by: syzbot+604f8271211546f5b3c7@syzkaller.appspotmail.com
Fixes: 5b8f3c8d30a6 ("virtio_net: Add XDP related stats")
Cc: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/virtio_net.c