diff --git a/net/core/dev.c b/net/core/dev.c
index 7c30dcecee1df7244f665483e30683e31eaf4d46..4040673f806aec18645c058546c6d10f5eca00e9 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2565,8 +2565,11 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
 	} while (skb->next);
 
 out_kfree_gso_skb:
-	if (likely(skb->next == NULL))
+	if (likely(skb->next == NULL)) {
 		skb->destructor = DEV_GSO_CB(skb)->destructor;
+		consume_skb(skb);
+		return rc;
+	}
 out_kfree_skb:
 	kfree_skb(skb);
 out: