mirror of https://gitee.com/openkylin/linux.git
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: Bob Copeland <me@bobcopeland.com> Acked-by: Nick Kossifidis <mickflemm@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
667ecd010d
commit
be0093705c
|
@ -1028,6 +1028,8 @@ ath5k_setup_bands(struct ieee80211_hw *hw)
|
|||
* it's done by reseting the chip. To accomplish this we must
|
||||
* first cleanup any pending DMA, then restart stuff after a la
|
||||
* ath5k_init.
|
||||
*
|
||||
* Called with sc->lock.
|
||||
*/
|
||||
static int
|
||||
ath5k_chan_set(struct ath5k_softc *sc, struct ieee80211_channel *chan)
|
||||
|
@ -2814,11 +2816,17 @@ ath5k_config(struct ieee80211_hw *hw, u32 changed)
|
|||
{
|
||||
struct ath5k_softc *sc = hw->priv;
|
||||
struct ieee80211_conf *conf = &hw->conf;
|
||||
int ret;
|
||||
|
||||
mutex_lock(&sc->lock);
|
||||
|
||||
sc->bintval = conf->beacon_int;
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue