70 lines
1.7 KiB
Diff
70 lines
1.7 KiB
Diff
From: Eric Dumazet <edumazet@google.com>
|
|
Date: Fri, 20 Dec 2013 14:29:08 -0800
|
|
Subject: net: use kfree_skb_list() helper
|
|
Origin: https://git.kernel.org/linus/289dccbe141e01efc5968fe39a0993c9f611375e
|
|
|
|
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>
|
|
---
|
|
net/core/dev.c | 18 +++---------------
|
|
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 c482fe8..973c236 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 2b6b863..eb96c2c 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);
|