Rajkumar Manoharan <rmanohar@xxxxxxxxxxxxxx> writes: >> Great! I'll fold in the rest, test it with ath9k and submit as a proper >> patch :) >> > Toke, > > I noticed a race condition b/w sta cleanup and kick_airtime tasklet. > How do you plan to exit kick_airtime gracefully during sta_cleanup? Ah, right, there's a lot of stuff going on before we get to purge_txq. Hmm, I guess we should either make sure we remove the station from active_txqs earlier in the sta cleanup process, or maybe it'd enough to just check the removed flag in the tasklet? Does the below patch fix the issue? -Toke diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 9c889da48ef0..8fa3c09d041c 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c @@ -258,6 +258,9 @@ static void __ieee80211_kick_airtime(struct ieee80211_local *local, int ac) sta = container_of(txqi->txq.sta, struct sta_info, sta); + if (sta->removed) + continue; + if (sta->airtime[ac].deficit >= 0) { seen_eligible = true;