diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index 7666540..c761910 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c @@ -1365,8 +1365,7 @@ static int xenvif_handle_frag_list(struct xenvif *vif, struct sk_buff *skb) vif->tx_frag_overflow++; xenvif_fill_frags(vif, nskb); - /* Subtract frags size, we will correct it later */ - skb->truesize -= skb->data_len; + skb->truesize += nskb->len; skb->len += nskb->len; skb->data_len += nskb->len; @@ -1379,7 +1378,6 @@ static int xenvif_handle_frag_list(struct xenvif *vif, struct sk_buff *skb) page = alloc_page(GFP_ATOMIC|__GFP_COLD); if (!page) { int j; - skb->truesize += skb->data_len; for (j = 0; j < i; j++) put_page(frags[j].page.p); return -ENOMEM; @@ -1402,7 +1400,6 @@ static int xenvif_handle_frag_list(struct xenvif *vif, struct sk_buff *skb) frags, i * sizeof(skb_frag_t)); skb_shinfo(skb)->nr_frags = i; - skb->truesize += i * PAGE_SIZE; /* remove traces of mapped pages and frag_list */ skb_frag_list_init(skb);