]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mac80211: ibss: stop transmit when merging IBSS
authorJohannes Berg <johannes.berg@intel.com>
Thu, 2 Jan 2025 14:20:07 +0000 (16:20 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 13 Jan 2025 14:34:10 +0000 (15:34 +0100)
We disable the carrier, but that doesn't immediately take
effect, and as such a concurrent transmit can go into the
driver while drv_leave_ibss() is happening and confuse it.
Synchronize to avoid that.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250102161730.83b58167e80e.I538751fbe1b4302d20f6ed80afb024bca6a2dbf5@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ibss.c

index a1b4178deccf3c2893c860a5a2a2797e69b07291..dfa125219e472a5ba70c6e4c0c8d021e6b712259 100644 (file)
@@ -245,6 +245,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
                sdata->vif.cfg.ibss_creator = false;
                sdata->vif.bss_conf.enable_beacon = false;
                netif_carrier_off(sdata->dev);
+               synchronize_net();
                ieee80211_bss_info_change_notify(sdata,
                                                 BSS_CHANGED_IBSS |
                                                 BSS_CHANGED_BEACON_ENABLED);