iwlwifi: mvm: align locking in D3 test debugfs
authorJohannes Berg <johannes.berg@intel.com>
Sat, 29 Jan 2022 11:16:16 +0000 (13:16 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 18 Feb 2022 08:40:51 +0000 (10:40 +0200)
Since commit a05829a7222e ("cfg80211: avoid holding the RTNL when
calling the driver") we're not only holding the RTNL when going
in and out of suspend, but also the wiphy->mtx. Add that to the
D3 test debugfs in iwlwifi since it's required for various calls
to mac80211.

Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Fixes: a05829a7222e ("cfg80211: avoid holding the RTNL when calling the driver")
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20220129105618.fcec0204e162.Ib73bf787ab4d83581de20eb89b1f8dbfcaaad0e3@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index 9f0e436..a995bba 100644 (file)
@@ -2697,7 +2697,9 @@ static int iwl_mvm_d3_test_open(struct inode *inode, struct file *file)
 
        /* start pseudo D3 */
        rtnl_lock();
+       wiphy_lock(mvm->hw->wiphy);
        err = __iwl_mvm_suspend(mvm->hw, mvm->hw->wiphy->wowlan_config, true);
+       wiphy_unlock(mvm->hw->wiphy);
        rtnl_unlock();
        if (err > 0)
                err = -EINVAL;
@@ -2753,7 +2755,9 @@ static int iwl_mvm_d3_test_release(struct inode *inode, struct file *file)
        iwl_fw_dbg_read_d3_debug_data(&mvm->fwrt);
 
        rtnl_lock();
+       wiphy_lock(mvm->hw->wiphy);
        __iwl_mvm_resume(mvm, true);
+       wiphy_unlock(mvm->hw->wiphy);
        rtnl_unlock();
 
        iwl_mvm_resume_tcm(mvm);