Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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