Commit be009370 authored by Bob Copeland's avatar Bob Copeland Committed by John W. Linville

ath5k: fix locking in ath5k_config

ath5k_config updates the software context without taking sc->lock.

Changes-licensed-under: 3-Clause-BSD
Signed-off-by: default avatarBob Copeland <me@bobcopeland.com>
Acked-by: default avatarNick Kossifidis <mickflemm@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 667ecd01
...@@ -1028,6 +1028,8 @@ ath5k_setup_bands(struct ieee80211_hw *hw) ...@@ -1028,6 +1028,8 @@ ath5k_setup_bands(struct ieee80211_hw *hw)
* it's done by reseting the chip. To accomplish this we must * it's done by reseting the chip. To accomplish this we must
* first cleanup any pending DMA, then restart stuff after a la * first cleanup any pending DMA, then restart stuff after a la
* ath5k_init. * ath5k_init.
*
* Called with sc->lock.
*/ */
static int static int
ath5k_chan_set(struct ath5k_softc *sc, struct ieee80211_channel *chan) ath5k_chan_set(struct ath5k_softc *sc, struct ieee80211_channel *chan)
...@@ -2814,11 +2816,17 @@ ath5k_config(struct ieee80211_hw *hw, u32 changed) ...@@ -2814,11 +2816,17 @@ ath5k_config(struct ieee80211_hw *hw, u32 changed)
{ {
struct ath5k_softc *sc = hw->priv; struct ath5k_softc *sc = hw->priv;
struct ieee80211_conf *conf = &hw->conf; struct ieee80211_conf *conf = &hw->conf;
int ret;
mutex_lock(&sc->lock);
sc->bintval = conf->beacon_int; sc->bintval = conf->beacon_int;
sc->power_level = conf->power_level; sc->power_level = conf->power_level;
return ath5k_chan_set(sc, conf->channel); ret = ath5k_chan_set(sc, conf->channel);
mutex_unlock(&sc->lock);
return ret;
} }
static int static int
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment