aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index e916ba8caccf..52cd71a4a343 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2694,10 +2694,12 @@ struct sk_buff *validate_xmit_skb(struct sk_buff *skb, struct net_device *dev)
2694 struct sk_buff *segs; 2694 struct sk_buff *segs;
2695 2695
2696 segs = skb_gso_segment(skb, features); 2696 segs = skb_gso_segment(skb, features);
2697 kfree_skb(skb); 2697 if (IS_ERR(segs)) {
2698 if (IS_ERR(segs))
2699 segs = NULL; 2698 segs = NULL;
2700 skb = segs; 2699 } else if (segs) {
2700 consume_skb(skb);
2701 skb = segs;
2702 }
2701 } else { 2703 } else {
2702 if (skb_needs_linearize(skb, features) && 2704 if (skb_needs_linearize(skb, features) &&
2703 __skb_linearize(skb)) 2705 __skb_linearize(skb))