diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-11-07 18:37:37 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-11-10 16:21:12 -0500 |
commit | 8f611288c8db0c89447856c4c8970bb7ee535448 (patch) | |
tree | 237d62b556e15750acb589b7ad7db25eb873fcd5 | |
parent | d8e235227899474976302cf272e5c2b756eb32de (diff) | |
download | linux-stable-8f611288c8db0c89447856c4c8970bb7ee535448.tar.gz linux-stable-8f611288c8db0c89447856c4c8970bb7ee535448.tar.bz2 linux-stable-8f611288c8db0c89447856c4c8970bb7ee535448.zip |
b43: work around a locking issue in ->set_tim()
ops->set_tim() must be atomic, so b43 trying to acquire a mutex leads
to a kernel crash. This patch trades an easy to trigger crash in AP
mode for an unlikely race condition. According to Michael, the real
fix would be to allow set_tim() to sleep, since b43 is not the only
driver that needs to sleep in all callbacks.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/b43/main.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 86f35827f008..098dda1a67c1 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c @@ -4521,9 +4521,8 @@ static int b43_op_beacon_set_tim(struct ieee80211_hw *hw, { struct b43_wl *wl = hw_to_b43_wl(hw); - mutex_lock(&wl->mutex); + /* FIXME: add locking */ b43_update_templates(wl); - mutex_unlock(&wl->mutex); return 0; } |