提交 96cd8951 编写于 作者: E Eric Dumazet 提交者: David S. Miller

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: NEric Dumazet <eric.dumazet@gmail.com>
CC: Po-Yu Chuang <ratbert@faraday-tech.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 e7e5a403
...@@ -439,7 +439,10 @@ static bool ftmac100_rx_packet(struct ftmac100 *priv, int *processed) ...@@ -439,7 +439,10 @@ static bool ftmac100_rx_packet(struct ftmac100 *priv, int *processed)
skb_fill_page_desc(skb, 0, page, 0, length); skb_fill_page_desc(skb, 0, page, 0, length);
skb->len += length; skb->len += length;
skb->data_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)); __pskb_pull_tail(skb, min(length, 64));
ftmac100_alloc_rx_page(priv, rxdes, GFP_ATOMIC); ftmac100_alloc_rx_page(priv, rxdes, GFP_ATOMIC);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册