diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 9f781092fda9cb8cac22b0743b4bc7666a3bd91a..5d9a11eafbf56d510a31b52ef4926d5490b9323b 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3093,7 +3093,7 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, * containing the same amount of data. */ skb_walk_frags(head_skb, iter) { - if (skb_headlen(iter)) + if (skb_headlen(iter) && !iter->head_frag) goto normal; len -= iter->len;