Loading net/core/dev.c +3 −15 Original line number Diff line number Diff line Loading @@ -2454,13 +2454,8 @@ static void dev_gso_skb_destructor(struct sk_buff *skb) { struct dev_gso_cb *cb; do { struct sk_buff *nskb = skb->next; skb->next = nskb->next; nskb->next = NULL; kfree_skb(nskb); } while (skb->next); kfree_skb_list(skb->next); skb->next = NULL; cb = DEV_GSO_CB(skb); if (cb->destructor) Loading Loading @@ -4240,17 +4235,10 @@ EXPORT_SYMBOL(netif_napi_add); void netif_napi_del(struct napi_struct *napi) { struct sk_buff *skb, *next; list_del_init(&napi->dev_list); napi_free_frags(napi); for (skb = napi->gro_list; skb; skb = next) { next = skb->next; skb->next = NULL; kfree_skb(skb); } kfree_skb_list(napi->gro_list); napi->gro_list = NULL; napi->gro_count = 0; } Loading net/core/skbuff.c +1 −4 Original line number Diff line number Diff line Loading @@ -2981,10 +2981,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features) return segs; err: while ((skb = segs)) { segs = skb->next; kfree_skb(skb); } kfree_skb_list(segs); return ERR_PTR(err); } EXPORT_SYMBOL_GPL(skb_segment); Loading Loading
net/core/dev.c +3 −15 Original line number Diff line number Diff line Loading @@ -2454,13 +2454,8 @@ static void dev_gso_skb_destructor(struct sk_buff *skb) { struct dev_gso_cb *cb; do { struct sk_buff *nskb = skb->next; skb->next = nskb->next; nskb->next = NULL; kfree_skb(nskb); } while (skb->next); kfree_skb_list(skb->next); skb->next = NULL; cb = DEV_GSO_CB(skb); if (cb->destructor) Loading Loading @@ -4240,17 +4235,10 @@ EXPORT_SYMBOL(netif_napi_add); void netif_napi_del(struct napi_struct *napi) { struct sk_buff *skb, *next; list_del_init(&napi->dev_list); napi_free_frags(napi); for (skb = napi->gro_list; skb; skb = next) { next = skb->next; skb->next = NULL; kfree_skb(skb); } kfree_skb_list(napi->gro_list); napi->gro_list = NULL; napi->gro_count = 0; } Loading
net/core/skbuff.c +1 −4 Original line number Diff line number Diff line Loading @@ -2981,10 +2981,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features) return segs; err: while ((skb = segs)) { segs = skb->next; kfree_skb(skb); } kfree_skb_list(segs); return ERR_PTR(err); } EXPORT_SYMBOL_GPL(skb_segment); Loading