Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

gro: Fix bogus gso_size on the first fraglist entry

When GRO produces fraglist entries, and the resulting skb hits
an interface that is incapable of TSO but capable of FRAGLIST,
we end up producing a bogus packet with gso_size non-zero.

This was reported in the field with older versions of KVM that
did not set the TSO bits on tuntap.

This patch fixes that.

Reported-by: Igor Zhang <yugzhang@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Herbert Xu and committed by
David S. Miller
622e0ca1 119fc60a

+1
+1
net/core/skbuff.c
··· 2718 2718 *NAPI_GRO_CB(nskb) = *NAPI_GRO_CB(p); 2719 2719 skb_shinfo(nskb)->frag_list = p; 2720 2720 skb_shinfo(nskb)->gso_size = pinfo->gso_size; 2721 + pinfo->gso_size = 0; 2721 2722 skb_header_release(p); 2722 2723 nskb->prev = p; 2723 2724