diff options
author | Eric Dumazet <edumazet@google.com> | 2013-12-20 14:29:08 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-12-21 22:28:16 -0500 |
commit | 289dccbe141e01efc5968fe39a0993c9f611375e (patch) | |
tree | 3582a2dad5279b0a7c39abc75f5517e5ca427273 /net/core | |
parent | 1b6176cca302e2eebd2b5ce5c512282a548adbe0 (diff) | |
download | linux-289dccbe141e01efc5968fe39a0993c9f611375e.tar.bz2 |
net: use kfree_skb_list() helper
We can use kfree_skb_list() instead of open coding it.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 18 | ||||
-rw-r--r-- | net/core/skbuff.c | 5 |
2 files changed, 4 insertions, 19 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index c482fe8abf87..973c23656673 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -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) @@ -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; } diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 2b6b863f51f2..eb96c2c22400 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -2981,10 +2981,7 @@ perform_csum_check: 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); |