diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 825e6b9880030c02717bf21a6060fb5a50943367..91661352dca89e0af08f360cf2970b90739cc196 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -614,13 +614,14 @@ static void skb_release_data(struct sk_buff *skb) &shinfo->dataref)) return; + skb_zcopy_clear(skb, true); + for (i = 0; i < shinfo->nr_frags; i++) __skb_frag_unref(&shinfo->frags[i]); if (shinfo->frag_list) kfree_skb_list(shinfo->frag_list); - skb_zcopy_clear(skb, true); skb_free_head(skb); }