diff options
-rw-r--r-- | drivers/net/xen-netback/netback.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index a773f2016bad..8cbf60d4689e 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c | |||
@@ -1521,7 +1521,16 @@ static int xenvif_tx_submit(struct xenvif_queue *queue) | |||
1521 | 1521 | ||
1522 | /* Check the remap error code. */ | 1522 | /* Check the remap error code. */ |
1523 | if (unlikely(xenvif_tx_check_gop(queue, skb, &gop_map, &gop_copy))) { | 1523 | if (unlikely(xenvif_tx_check_gop(queue, skb, &gop_map, &gop_copy))) { |
1524 | /* If there was an error, xenvif_tx_check_gop is | ||
1525 | * expected to release all the frags which were mapped, | ||
1526 | * so kfree_skb shouldn't do it again | ||
1527 | */ | ||
1524 | skb_shinfo(skb)->nr_frags = 0; | 1528 | skb_shinfo(skb)->nr_frags = 0; |
1529 | if (skb_has_frag_list(skb)) { | ||
1530 | struct sk_buff *nskb = | ||
1531 | skb_shinfo(skb)->frag_list; | ||
1532 | skb_shinfo(nskb)->nr_frags = 0; | ||
1533 | } | ||
1525 | kfree_skb(skb); | 1534 | kfree_skb(skb); |
1526 | continue; | 1535 | continue; |
1527 | } | 1536 | } |