diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-10-11 14:19:21 +0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-10-12 23:55:53 +0400 |
commit | edbfdcceb41c0cbfc1dd2cd28af2272190be47ad (patch) | |
tree | c0f27caf647a927e855b4b37266930bcc68f4c22 /drivers/net/wireless/b43 | |
parent | 51f98f1313d2fc4b1d3a3e1f4db7cf4925b29df6 (diff) | |
download | linux-edbfdcceb41c0cbfc1dd2cd28af2272190be47ad.tar.xz |
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=40266
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>
Diffstat (limited to 'drivers/net/wireless/b43')
-rw-r--r-- | drivers/net/wireless/b43/xmit.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c index 892573b27d50..f4e9695ec186 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++; |