OSDN Git Service

net/packet: tpacket_rcv: do not increment ring index on drop
authorWillem de Bruijn <willemb@google.com>
Mon, 9 Mar 2020 15:34:35 +0000 (11:34 -0400)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 Mar 2020 06:12:16 +0000 (23:12 -0700)
commit46e4c421a053c36bf7a33dda2272481bcaf3eed3
tree76c4e9db0d24d3027cff0ecfc537d0e8ab373d74
parentf3cc008bf6d59b8d93b4190e01d3e557b0040e15
net/packet: tpacket_rcv: do not increment ring index on drop

In one error case, tpacket_rcv drops packets after incrementing the
ring producer index.

If this happens, it does not update tp_status to TP_STATUS_USER and
thus the reader is stalled for an iteration of the ring, causing out
of order arrival.

The only such error path is when virtio_net_hdr_from_skb fails due
to encountering an unknown GSO type.

Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/packet/af_packet.c