diff options
author | Dmitry Shmidt <dimitrysh@google.com> | 2012-06-29 09:31:18 -0700 |
---|---|---|
committer | Dmitry Shmidt <dimitrysh@google.com> | 2012-07-12 10:45:49 -0700 |
commit | fa98f042f17bedb9f714193354cef67d3b253176 (patch) | |
tree | 93b86cc429ca79c2fb0eaaa4117db3c151ca655a /drivers/net | |
parent | 22baf5de1054939a81c2b35daa0663d96f06806b (diff) | |
download | kernel_samsung_crespo-fa98f042f17bedb9f714193354cef67d3b253176.zip kernel_samsung_crespo-fa98f042f17bedb9f714193354cef67d3b253176.tar.gz kernel_samsung_crespo-fa98f042f17bedb9f714193354cef67d3b253176.tar.bz2 |
net: wireless: bcmdhd: Add mutex to wl_update_wiphybands()
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/bcmdhd/wl_cfg80211.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/net/wireless/bcmdhd/wl_cfg80211.c b/drivers/net/wireless/bcmdhd/wl_cfg80211.c index 28c9241..121f3bb 100644 --- a/drivers/net/wireless/bcmdhd/wl_cfg80211.c +++ b/drivers/net/wireless/bcmdhd/wl_cfg80211.c @@ -7149,11 +7149,15 @@ s32 wl_update_wiphybands(struct wl_priv *wl) int nmode = 0; int bw_cap = 0; int index = 0; + bool rollback_lock = false; WL_DBG(("Entry")); - if (wl == NULL) + if (wl == NULL) { wl = wlcfg_drv_priv; + mutex_lock(&wl->usr_sync); + rollback_lock = true; + } dev = wl_to_prmry_ndev(wl); memset(bandlist, 0, sizeof(bandlist)); @@ -7161,7 +7165,7 @@ s32 wl_update_wiphybands(struct wl_priv *wl) sizeof(bandlist), false); if (unlikely(err)) { WL_ERR(("error read bandlist (%d)\n", err)); - return err; + goto end_bands; } wiphy = wl_to_wiphy(wl); nband = bandlist[0]; @@ -7183,7 +7187,7 @@ s32 wl_update_wiphybands(struct wl_priv *wl) if (err) { WL_ERR(("wl_construct_reginfo() fails err=%d\n", err)); if (err != BCME_UNSUPPORTED) - return err; + goto end_bands; /* Ignore error if "chanspecs" command is not supported */ err = 0; } @@ -7212,6 +7216,9 @@ s32 wl_update_wiphybands(struct wl_priv *wl) } wiphy_apply_custom_regulatory(wiphy, &brcm_regdom); +end_bands: + if (rollback_lock) + mutex_unlock(&wl->usr_sync); return err; } |