From: Willem de Bruijn <willemdebruijn.ker...@gmail.com>
Date: Wed,  6 Jun 2018 11:23:01 -0400

> From: Willem de Bruijn <will...@google.com>
> 
> Tun, tap, virtio, packet and uml vector all use struct virtio_net_hdr
> to communicate packet metadata to userspace.
> 
> For skbuffs with vlan, the first two return the packet as it may have
> existed on the wire, inserting the VLAN tag in the user buffer.  Then
> virtio_net_hdr.csum_start needs to be adjusted by VLAN_HLEN bytes.
> 
> Commit f09e2249c4f5 ("macvtap: restore vlan header on user read")
> added this feature to macvtap. Commit 3ce9b20f1971 ("macvtap: Fix
> csum_start when VLAN tags are present") then fixed up csum_start.
> 
> Virtio, packet and uml do not insert the vlan header in the user
> buffer.
> 
> When introducing virtio_net_hdr_from_skb to deduplicate filling in
> the virtio_net_hdr, the variant from macvtap which adds VLAN_HLEN was
> applied uniformly, breaking csum offset for packets with vlan on
> virtio and packet.
> 
> Make insertion of VLAN_HLEN optional. Convert the callers to pass it
> when needed.
> 
> Fixes: e858fae2b0b8f4 ("virtio_net: use common code for virtio_net_hdr and 
> skb GSO conversion")
> Fixes: 1276f24eeef2 ("packet: use common code for virtio_net_hdr and skb GSO 
> conversion")
> Signed-off-by: Willem de Bruijn <will...@google.com>

Applied and queued up for -stable, thanks Willem.

Reply via email to