On Tue, 2021-10-05 at 21:09 -0700, Aloka Dixit wrote: > From: John Crispin <john@xxxxxxxxxxx> > > Trigger ieee80211_csa_finish() on the non-transmitting interfaces > when channel switch concludes on the transmitting interface. > > Signed-off-by: John Crispin <john@xxxxxxxxxxx> > Co-developed-by: Aloka Dixit <alokad@xxxxxxxxxxxxxx> > Signed-off-by: Aloka Dixit <alokad@xxxxxxxxxxxxxx> > --- > v13: Replaced list_for_each_entry_safe() by list_for_each_entry() > Uh, ouch. I guess I miscommunicated that. What I really meant was that the list iteration here: > + if (vif->mbssid_tx_vif == vif) { > + struct ieee80211_sub_if_data *child; > + > + list_for_each_entry(child, &sdata->local->interfaces, > list) does not seem correct, since it's not locked, and you don't have any guarantees that it's not being modified since the only thing here is that the vif pointer is coming in valid from the driver? johannes