ath9k: fix using sta->drv_priv before initializing it
commit 7711aaf08ad3fc4d0e937eec1de0a63620444ce7 upstream. A station pointer can be passed to the driver on tx, before it has been marked as associated. Since ath9k_sta_state was initializing the entry too late, it resulted in some spurious crashes. Fixes: df3c6eb34da5 ("ath9k: Use sta_state() callback") Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
10c2897d86
commit
17127b7c69
@ -1550,13 +1550,13 @@ static int ath9k_sta_state(struct ieee80211_hw *hw,
|
||||
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
||||
int ret = 0;
|
||||
|
||||
if (old_state == IEEE80211_STA_AUTH &&
|
||||
new_state == IEEE80211_STA_ASSOC) {
|
||||
if (old_state == IEEE80211_STA_NOTEXIST &&
|
||||
new_state == IEEE80211_STA_NONE) {
|
||||
ret = ath9k_sta_add(hw, vif, sta);
|
||||
ath_dbg(common, CONFIG,
|
||||
"Add station: %pM\n", sta->addr);
|
||||
} else if (old_state == IEEE80211_STA_ASSOC &&
|
||||
new_state == IEEE80211_STA_AUTH) {
|
||||
} else if (old_state == IEEE80211_STA_NONE &&
|
||||
new_state == IEEE80211_STA_NOTEXIST) {
|
||||
ret = ath9k_sta_remove(hw, vif, sta);
|
||||
ath_dbg(common, CONFIG,
|
||||
"Remove station: %pM\n", sta->addr);
|
||||
|
Loading…
x
Reference in New Issue
Block a user