From 0726c92e2f26352919ebb353f428e1e5b7dd3b20 Mon Sep 17 00:00:00 2001 From: Arend van Spriel Date: Thu, 10 Nov 2011 20:30:30 +0100 Subject: [PATCH] --- yaml --- r: 277885 b: refs/heads/master c: 53ee4bc46784ad53d0a9be52e8d687dd4e89a055 h: refs/heads/master i: 277883: 935616afd9c2044d8d35e337883b3882cb995fad v: v3 --- [refs] | 2 +- .../net/wireless/brcm80211/brcmutil/utils.c | 33 +++++++------------ 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/[refs] b/[refs] index b33e25d73a6c..05fa73d23375 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9a95e60e0610bb8ec39c74d2c8546514a76428df +refs/heads/master: 53ee4bc46784ad53d0a9be52e8d687dd4e89a055 diff --git a/trunk/drivers/net/wireless/brcm80211/brcmutil/utils.c b/trunk/drivers/net/wireless/brcm80211/brcmutil/utils.c index 3a92f72caef7..b7537f70a795 100644 --- a/trunk/drivers/net/wireless/brcm80211/brcmutil/utils.c +++ b/trunk/drivers/net/wireless/brcm80211/brcmutil/utils.c @@ -41,28 +41,17 @@ EXPORT_SYMBOL(brcmu_pkt_buf_get_skb); /* Free the driver packet. Free the tag if present */ void brcmu_pkt_buf_free_skb(struct sk_buff *skb) { - struct sk_buff *nskb; - int nest = 0; - - /* perversion: we use skb->next to chain multi-skb packets */ - while (skb) { - nskb = skb->next; - skb->next = NULL; - - if (skb->destructor) - /* cannot kfree_skb() on hard IRQ (net/core/skbuff.c) if - * destructor exists - */ - dev_kfree_skb_any(skb); - else - /* can free immediately (even in_irq()) if destructor - * does not exist - */ - dev_kfree_skb(skb); - - nest++; - skb = nskb; - } + WARN_ON(skb->next); + if (skb->destructor) + /* cannot kfree_skb() on hard IRQ (net/core/skbuff.c) if + * destructor exists + */ + dev_kfree_skb_any(skb); + else + /* can free immediately (even in_irq()) if destructor + * does not exist + */ + dev_kfree_skb(skb); } EXPORT_SYMBOL(brcmu_pkt_buf_free_skb);