diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2012-02-13 04:09:20 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-02-13 16:04:39 -0500 |
commit | de8261c2fa364397ed872fad1244d75364689168 (patch) | |
tree | 742b5723530cf485361c90af76518fc6ea33ade1 /net/core | |
parent | c5665a538da6b887a5096358a12527785506e5ac (diff) | |
download | linux-stable-de8261c2fa364397ed872fad1244d75364689168.tar.gz linux-stable-de8261c2fa364397ed872fad1244d75364689168.tar.bz2 linux-stable-de8261c2fa364397ed872fad1244d75364689168.zip |
gro: fix truesize underestimation
skb_gro_receive() doesnt update truesize properly when adding one skb to
frag_list.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/skbuff.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index da0c97f2fab4..f3a530780753 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -2906,7 +2906,7 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb) nskb->prev = p; nskb->data_len += p->len; - nskb->truesize += p->len; + nskb->truesize += p->truesize; nskb->len += p->len; *head = nskb; @@ -2916,6 +2916,7 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb) p = nskb; merge: + p->truesize += skb->truesize - len; if (offset > headlen) { unsigned int eat = offset - headlen; |