@@ -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);