]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlwifi: mld: only create debugfs symlink if it does not exist
authorBenjamin Berg <benjamin.berg@intel.com>
Sun, 20 Apr 2025 06:59:57 +0000 (09:59 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Apr 2025 12:45:29 +0000 (14:45 +0200)
When mac80211 switches between non-MLO and MLO it will recreate the
debugfs directories. This results in the add_if_debugfs handler being
called multiple times. As the convenience symlink is created in the mld
debugfs directory and not the vif, it will not be removed by mac80211
when this happens and still exists.

Add a check and only create the convenience symlink if we have not yet
done so.

Fixes: d1e879ec600f ("wifi: iwlwifi: add iwlmld sub-driver")
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250420095642.2490696f032a.I74319c7cf18f7e16a3d331cb96e38504b9fbab66@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mld/debugfs.c
drivers/net/wireless/intel/iwlwifi/mld/mac80211.c

index 89d95e9b4f301a7c26308239b8fecd8e2a2c194e..93f9f78e4276bd16ab1466772f26e2244b756599 100644 (file)
@@ -949,8 +949,9 @@ void iwl_mld_add_vif_debugfs(struct ieee80211_hw *hw,
        snprintf(name, sizeof(name), "%pd", vif->debugfs_dir);
        snprintf(target, sizeof(target), "../../../%pd3/iwlmld",
                 vif->debugfs_dir);
-       mld_vif->dbgfs_slink =
-               debugfs_create_symlink(name, mld->debugfs_dir, target);
+       if (!mld_vif->dbgfs_slink)
+               mld_vif->dbgfs_slink =
+                       debugfs_create_symlink(name, mld->debugfs_dir, target);
 
        if (iwlmld_mod_params.power_scheme != IWL_POWER_SCHEME_CAM &&
            vif->type == NL80211_IFTYPE_STATION) {
index 99e13cfd1e5feb693546302f238273dd8c572292..68d97d3b8f0260139d40ae5b9700d379e5ff0fcd 100644 (file)
@@ -651,6 +651,7 @@ void iwl_mld_mac80211_remove_interface(struct ieee80211_hw *hw,
 
 #ifdef CONFIG_IWLWIFI_DEBUGFS
        debugfs_remove(iwl_mld_vif_from_mac80211(vif)->dbgfs_slink);
+       iwl_mld_vif_from_mac80211(vif)->dbgfs_slink = NULL;
 #endif
 
        iwl_mld_rm_vif(mld, vif);