summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Vossen <rvossen@broadcom.com>2011-02-15 10:13:51 (GMT)
committerGreg Kroah-Hartman <gregkh@suse.de>2011-02-18 21:04:55 (GMT)
commit490e00f68534cd724ba8e486ff6cd6b10d1891b1 (patch)
treed7bca47b161dd60e4049a179a5ebc1f8ea2d2276
parent59909c7c296a9f75ff395db2006de0aa6f57e7a7 (diff)
downloadlinux-fsl-qoriq-490e00f68534cd724ba8e486ff6cd6b10d1891b1.tar.xz
staging: brcm80211: bugfix for stack dump on firmware load problems
If there is a problem with the firmware load (eg, firmware not present in /lib/firmware/brcm), then the driver would dump its stack instead of bailing out gracefully. Root cause was an uninitialized variable (wl->pub) being dereferenced in the rfkill portion of a cleanup routine (wl_remove). Fix was to move the rfkill calls into the correct spot in wl_remove(). Signed-off-by: Roland Vossen <rvossen@broadcom.com> Reviewed-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/staging/brcm80211/brcmsmac/wl_mac80211.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
index bf98a15..20afb13 100644
--- a/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
+++ b/drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
@@ -1206,15 +1206,13 @@ static void wl_remove(struct pci_dev *pdev)
return;
}
- /* make sure rfkill is not using driver */
- wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, false);
- wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy);
-
if (!wlc_chipmatch(pdev->vendor, pdev->device)) {
WL_ERROR("wl: wl_remove: wlc_chipmatch failed\n");
return;
}
if (wl->wlc) {
+ wiphy_rfkill_set_hw_state(wl->pub->ieee_hw->wiphy, false);
+ wiphy_rfkill_stop_polling(wl->pub->ieee_hw->wiphy);
ieee80211_unregister_hw(hw);
WL_LOCK(wl);
wl_down(wl);