Commit 960c7e6d authored by Miri Korenblit's avatar Miri Korenblit
Browse files

wifi: iwlwifi: mld: avoid panic on init failure



In case of an error during init, in_hw_restart will be set, but it will
never get cleared.
Instead, we will retry to init again, and then we will act like we are in a
restart when we are actually not.

This causes (among others) to a NULL pointer dereference when canceling
rx_omi::finished_work, that was not even initialized, because we thought
that we are in hw_restart.

Set in_hw_restart to true only if the fw is running, then we know that
FW was loaded successfully and we are not going to the retry loop.

Fixes: 7391b2a4 ("wifi: iwlwifi: rework firmware error handling")
Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250604061200.e0040e0a4b09.Iae469a0abe6bfa3c26d8a88c066bad75c2e8f121@changeid


Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
parent 264c844a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -653,7 +653,8 @@ iwl_mld_nic_error(struct iwl_op_mode *op_mode,
	 * It might not actually be true that we'll restart, but the
	 * setting doesn't matter if we're going to be unbound either.
	 */
	if (type != IWL_ERR_TYPE_RESET_HS_TIMEOUT)
	if (type != IWL_ERR_TYPE_RESET_HS_TIMEOUT &&
	    mld->fw_status.running)
		mld->fw_status.in_hw_restart = true;
}