Commit cd6f46c2 authored by Emmanuel Grumbach's avatar Emmanuel Grumbach Committed by Johannes Berg
Browse files

wifi: iwlwifi: mvm: take the mutex before running link selection



iwl_mvm_select_links is called by the link selection worker and it
requires the mutex.
Take it in the link selection worker.
This logic used to run from iwl_mvm_rx_umac_scan_complete_notif which
had the mvm->mutex held. This was changed to run in a worker holding the
wiphy mutex, but we also need the mvm->mutex.

Fixes: 2e194efa ("wifi: iwlwifi: mvm: Fix race in scan completion")
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Reviewed-by: default avatarIlan Peer <ilan.peer@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20240825191257.0cacecd5db1e.Iaca38a078592b69bdd06549daf63408ccf1810e4@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 916a5d9c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1198,10 +1198,12 @@ static void iwl_mvm_trig_link_selection(struct wiphy *wiphy,
	struct iwl_mvm *mvm =
		container_of(wk, struct iwl_mvm, trig_link_selection_wk);

	mutex_lock(&mvm->mutex);
	ieee80211_iterate_active_interfaces(mvm->hw,
					    IEEE80211_IFACE_ITER_NORMAL,
					    iwl_mvm_find_link_selection_vif,
					    NULL);
	mutex_unlock(&mvm->mutex);
}

static struct iwl_op_mode *