From: Eric Dumazet Date: Thu, 13 Oct 2011 11:20:08 +0000 (+0000) Subject: ftmac100: fix skb truesize underestimation X-Git-Tag: next-20111025~57^2~109 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=96cd8951684adaa5fd72952adef532d0b42f70e1;p=karo-tx-linux.git ftmac100: fix skb truesize underestimation ftmac100 allocates a page per skb fragment. We must account PAGE_SIZE increments on skb->truesize, not the actual frag length. If frame is under 64 bytes, page is freed, so increase truesize only for bigger frames. Signed-off-by: Eric Dumazet CC: Po-Yu Chuang Signed-off-by: David S. Miller --- diff --git a/drivers/net/ethernet/faraday/ftmac100.c b/drivers/net/ethernet/faraday/ftmac100.c index 9bd7746cbfcf..a127cb2476c7 100644 --- a/drivers/net/ethernet/faraday/ftmac100.c +++ b/drivers/net/ethernet/faraday/ftmac100.c @@ -439,7 +439,10 @@ static bool ftmac100_rx_packet(struct ftmac100 *priv, int *processed) skb_fill_page_desc(skb, 0, page, 0, length); skb->len += length; skb->data_len += length; - skb->truesize += length; + + /* page might be freed in __pskb_pull_tail() */ + if (length > 64) + skb->truesize += PAGE_SIZE; __pskb_pull_tail(skb, min(length, 64)); ftmac100_alloc_rx_page(priv, rxdes, GFP_ATOMIC);