The following commit has been merged in the linux branch: commit edbfdcceb41c0cbfc1dd2cd28af2272190be47ad Author: Johannes Berg johannes@sipsolutions.net Date: Sun Oct 11 12:19:21 2009 +0200
b43: fix ieee80211_rx() context
Due to the way it interacts with the networking stack and other parts of mac80211, ieee80211_rx() must be called with disabled softirqs.
[1] http://thread.gmane.org/gmane.linux.kernel.wireless.general/39440/focus=4026...
Reported-by: Dave Young hidave.darkstar@gmail.com Signed-off-by: Johannes Berg johannes@sipsolutions.net Signed-off-by: John W. Linville linville@tuxdriver.com
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c index 892573b..f4e9695 100644 --- a/drivers/net/wireless/b43/xmit.c +++ b/drivers/net/wireless/b43/xmit.c @@ -690,7 +690,10 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr) }
memcpy(IEEE80211_SKB_RXCB(skb), &status, sizeof(status)); + + local_bh_disable(); ieee80211_rx(dev->wl->hw, skb); + local_bh_enable();
#if B43_DEBUG dev->rx_count++;