aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuennadi Liakhovetski <g.liakhovetski@gmx.de>2012-01-06 06:58:16 -0500
committerJohn W. Linville <linville@tuxdriver.com>2012-01-13 14:40:50 -0500
commitccde8a45cbd3ea9a6e785e4393d3a1f6b4e6b495 (patch)
tree15e7011f8a11f0ade53f0704093abd596e6d2f42
parent099469502f62fbe0d7e4f0b83a2f22538367f734 (diff)
wireless: b43: fix Oops on card eject during transfer
An Oops has once been observed, when the SDIO card had been ejected during IO. The PC value shows, that the dev pointer in b43_op_stop() was NULL. (I moved the NULL check before the lock, based upon a suggestion from Julian Calaby <julian.calaby@gmail.com>. -- JWL) Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/b43/main.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 1c6f19393ef..b91f28ef103 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -4852,6 +4852,9 @@ static void b43_op_stop(struct ieee80211_hw *hw)
4852 4852
4853 cancel_work_sync(&(wl->beacon_update_trigger)); 4853 cancel_work_sync(&(wl->beacon_update_trigger));
4854 4854
4855 if (!dev)
4856 goto out;
4857
4855 mutex_lock(&wl->mutex); 4858 mutex_lock(&wl->mutex);
4856 if (b43_status(dev) >= B43_STAT_STARTED) { 4859 if (b43_status(dev) >= B43_STAT_STARTED) {
4857 dev = b43_wireless_core_stop(dev); 4860 dev = b43_wireless_core_stop(dev);
@@ -4863,7 +4866,7 @@ static void b43_op_stop(struct ieee80211_hw *hw)
4863 4866
4864out_unlock: 4867out_unlock:
4865 mutex_unlock(&wl->mutex); 4868 mutex_unlock(&wl->mutex);
4866 4869out:
4867 cancel_work_sync(&(wl->txpower_adjust_work)); 4870 cancel_work_sync(&(wl->txpower_adjust_work));
4868} 4871}
4869 4872