From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Fri, 21 May 2010 06:07:56 +0000 (-0700)
Subject: gro: Fix bogus gso_size on the first fraglist entry
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=622e0ca1cd4d459f5af4f2c65f4dc0dd823cb4c3;p=GitHub%2FLineageOS%2Fandroid_kernel_samsung_universal7580.git

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>
---

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index c543dd25243..4c11000a96a 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2718,6 +2718,7 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
 	*NAPI_GRO_CB(nskb) = *NAPI_GRO_CB(p);
 	skb_shinfo(nskb)->frag_list = p;
 	skb_shinfo(nskb)->gso_size = pinfo->gso_size;
+	pinfo->gso_size = 0;
 	skb_header_release(p);
 	nskb->prev = p;