From: Ulrich Kunitz <kune@xxxxxxxxxxxxxx> Some of the kfree_skb() calls could happen in irq context. Changed all calls to dev_kfree_skb() in non-irq context and to dev_kfree_skb_any() where an irq context might happen. Signed-off-by: Ulrich Kunitz <kune@xxxxxxxxxxxxxx> Signed-off-by: Daniel Drake <dsd@xxxxxxxxxx> --- drivers/net/wireless/mac80211/zd1211rw/zd_mac.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/mac80211/zd1211rw/zd_mac.c b/drivers/net/wireless/mac80211/zd1211rw/zd_mac.c index cd5d17f..91b908a 100644 --- a/drivers/net/wireless/mac80211/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/mac80211/zd1211rw/zd_mac.c @@ -160,7 +160,7 @@ static int zd_mac_stop(struct ieee80211_hw *dev) struct ieee80211_tx_control *control = *(struct ieee80211_tx_control **)skb->cb; kfree(control); - kfree_skb(skb); + dev_kfree_skb(skb); } return 0; @@ -319,7 +319,7 @@ static int zd_mac_tx(struct ieee80211_hw *dev, struct sk_buff *skb, return r; if (control->flags & IEEE80211_TXCTL_NO_ACK) { - kfree_skb(skb); + dev_kfree_skb(skb); return 0; } @@ -350,7 +350,7 @@ void zd_mac_tx_failed(struct ieee80211_hw *dev) ieee80211_tx_status_irqsafe(dev, skb, &status); kfree(control); } else - kfree_skb(skb); + dev_kfree_skb_any(skb); return; } @@ -457,7 +457,7 @@ static int filter_ack(struct ieee80211_hw *dev, struct ieee80211_hdr *rx_hdr, ieee80211_tx_status_irqsafe(dev, skb, &status); kfree(control); } else - kfree_skb(skb); + dev_kfree_skb_any(skb); return 1; } -- 1.5.1.2 - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html