aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2010-05-21 02:07:56 -0400
committerDavid S. Miller <davem@davemloft.net>2010-05-21 02:07:56 -0400
commit622e0ca1cd4d459f5af4f2c65f4dc0dd823cb4c3 (patch)
tree3a49a20733179d9475ffb220a29781e22eeb2cb6 /net
parent119fc60a2d20b63439fdae99f0c7022d3dd99def (diff)
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>
Diffstat (limited to 'net')
-rw-r--r--net/core/skbuff.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index c543dd252433..4c11000a96aa 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)
2718 *NAPI_GRO_CB(nskb) = *NAPI_GRO_CB(p); 2718 *NAPI_GRO_CB(nskb) = *NAPI_GRO_CB(p);
2719 skb_shinfo(nskb)->frag_list = p; 2719 skb_shinfo(nskb)->frag_list = p;
2720 skb_shinfo(nskb)->gso_size = pinfo->gso_size; 2720 skb_shinfo(nskb)->gso_size = pinfo->gso_size;
2721 pinfo->gso_size = 0;
2721 skb_header_release(p); 2722 skb_header_release(p);
2722 nskb->prev = p; 2723 nskb->prev = p;
2723 2724