wifi: iwlwifi: mld: inform trans on init failure
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Sun, 20 Apr 2025 06:59:56 +0000 (09:59 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Apr 2025 12:45:29 +0000 (14:45 +0200)
If starting the op mode failed, the opmode memory is being freed,
so trans->op_mode needs to be NULLified. Otherwise, trans will access
already freed memory.
Call iwl_trans_op_mode_leave in that case.

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

index cfdf52b..4a0842a 100644 (file)
@@ -414,7 +414,7 @@ iwl_op_mode_mld_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
                wiphy_unlock(mld->wiphy);
                rtnl_unlock();
                iwl_fw_flush_dumps(&mld->fwrt);
-               goto free_hw;
+               goto err;
        }
 
        /* We are about to stop the FW. Notifications may require an
@@ -460,7 +460,8 @@ leds_exit:
        iwl_mld_leds_exit(mld);
 free_nvm:
        kfree(mld->nvm_data);
-free_hw:
+err:
+       iwl_trans_op_mode_leave(mld->trans);
        ieee80211_free_hw(mld->hw);
        return ERR_PTR(ret);
 }