aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <[email protected]>2025-05-04 10:26:30 +0000
committerMiri Korenblit <[email protected]>2025-05-07 03:08:01 +0000
commit6b340a694cee9e7a24b2be827c738b5b6cb13c84 (patch)
tree0da266c92d1d696355e22547e6bb0e5a058a85a7
parentwifi: iwlwifi: tests: simplify devinfo_no_trans_cfg_dups() (diff)
downloadkernel-6b340a694cee9e7a24b2be827c738b5b6cb13c84.tar.gz
kernel-6b340a694cee9e7a24b2be827c738b5b6cb13c84.zip
wifi: iwlwifi: dvm: pair transport op-mode enter/leave
If there's a failure and the op-mode didn't actually fully initialize, it should leave the transport again. Fix that. Signed-off-by: Johannes Berg <[email protected]> Signed-off-by: Miri Korenblit <[email protected]> Link: https://patch.msgid.link/20250504132447.714c3517548b.I49557e7ba8c03be2b558cc9fb5efa2a9fbab890e@changeid
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/main.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/main.c b/drivers/net/wireless/intel/iwlwifi/dvm/main.c
index 1d811b60162b..38e66e694d52 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/main.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/main.c
@@ -1380,14 +1380,14 @@ static struct iwl_op_mode *iwl_op_mode_dvm_start(struct iwl_trans *trans,
err = iwl_trans_start_hw(priv->trans);
if (err)
- goto out_free_hw;
+ goto out_leave_trans;
/* Read the EEPROM */
err = iwl_read_eeprom(priv->trans, &priv->eeprom_blob,
&priv->eeprom_blob_size);
if (err) {
IWL_ERR(priv, "Unable to init EEPROM\n");
- goto out_free_hw;
+ goto out_leave_trans;
}
/* Reset chip to save power until we load uCode during "up". */
@@ -1503,6 +1503,8 @@ out_free_eeprom_blob:
kfree(priv->eeprom_blob);
out_free_eeprom:
kfree(priv->nvm_data);
+out_leave_trans:
+ iwl_trans_op_mode_leave(priv->trans);
out_free_hw:
ieee80211_free_hw(priv->hw);
out: