diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2010-05-20 23:07:56 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-08-02 10:26:24 -0700 |
commit | 8a8641620981ea60268d86b1d8107160ff0ab4d5 (patch) | |
tree | 050d2edfdc432ba01e966faf705ba5d24bcf4409 | |
parent | 6e6f920379266f7b5500be5a9f4236e0ffa546c5 (diff) | |
download | lwn-8a8641620981ea60268d86b1d8107160ff0ab4d5.tar.gz lwn-8a8641620981ea60268d86b1d8107160ff0ab4d5.zip |
gro: Fix bogus gso_size on the first fraglist entry
[ Upstream commit 622e0ca1cd4d459f5af4f2c65f4dc0dd823cb4c3 ]
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | net/core/skbuff.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 93c4e060c91e..cad8e97980a9 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -2729,6 +2729,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; |