diff options
author | David S. Miller <davem@davemloft.net> | 2019-03-02 15:54:35 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-03-02 15:54:35 -0500 |
commit | 9eb359140cd307f8a14f61c19b155ffca5291057 (patch) | |
tree | 22d5143608ef1744ca4b7025414777defe8bcca5 /drivers/net/xen-netback/netback.c | |
parent | cf29576fee6016fa7004262cb98f57a2269178f1 (diff) | |
parent | 07f12b26e21ab359261bf75cfcb424fdc7daeb6d (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'drivers/net/xen-netback/netback.c')
-rw-r--r-- | drivers/net/xen-netback/netback.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c index c801a832851c..1d9940d4e8c7 100644 --- a/drivers/net/xen-netback/netback.c +++ b/drivers/net/xen-netback/netback.c | |||
@@ -1072,11 +1072,6 @@ static int xenvif_handle_frag_list(struct xenvif_queue *queue, struct sk_buff *s | |||
1072 | skb_frag_size_set(&frags[i], len); | 1072 | skb_frag_size_set(&frags[i], len); |
1073 | } | 1073 | } |
1074 | 1074 | ||
1075 | /* Copied all the bits from the frag list -- free it. */ | ||
1076 | skb_frag_list_init(skb); | ||
1077 | xenvif_skb_zerocopy_prepare(queue, nskb); | ||
1078 | kfree_skb(nskb); | ||
1079 | |||
1080 | /* Release all the original (foreign) frags. */ | 1075 | /* Release all the original (foreign) frags. */ |
1081 | for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) | 1076 | for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) |
1082 | skb_frag_unref(skb, f); | 1077 | skb_frag_unref(skb, f); |
@@ -1145,6 +1140,8 @@ static int xenvif_tx_submit(struct xenvif_queue *queue) | |||
1145 | xenvif_fill_frags(queue, skb); | 1140 | xenvif_fill_frags(queue, skb); |
1146 | 1141 | ||
1147 | if (unlikely(skb_has_frag_list(skb))) { | 1142 | if (unlikely(skb_has_frag_list(skb))) { |
1143 | struct sk_buff *nskb = skb_shinfo(skb)->frag_list; | ||
1144 | xenvif_skb_zerocopy_prepare(queue, nskb); | ||
1148 | if (xenvif_handle_frag_list(queue, skb)) { | 1145 | if (xenvif_handle_frag_list(queue, skb)) { |
1149 | if (net_ratelimit()) | 1146 | if (net_ratelimit()) |
1150 | netdev_err(queue->vif->dev, | 1147 | netdev_err(queue->vif->dev, |
@@ -1153,6 +1150,9 @@ static int xenvif_tx_submit(struct xenvif_queue *queue) | |||
1153 | kfree_skb(skb); | 1150 | kfree_skb(skb); |
1154 | continue; | 1151 | continue; |
1155 | } | 1152 | } |
1153 | /* Copied all the bits from the frag list -- free it. */ | ||
1154 | skb_frag_list_init(skb); | ||
1155 | kfree_skb(nskb); | ||
1156 | } | 1156 | } |
1157 | 1157 | ||
1158 | skb->dev = queue->vif->dev; | 1158 | skb->dev = queue->vif->dev; |