diff options
| -rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-drv.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-drv.c b/drivers/net/wireless/iwlwifi/iwl-drv.c index d742900969ea..fac67a526a30 100644 --- a/drivers/net/wireless/iwlwifi/iwl-drv.c +++ b/drivers/net/wireless/iwlwifi/iwl-drv.c @@ -861,13 +861,18 @@ static void iwl_ucode_callback(const struct firmware *ucode_raw, void *context)  	/* We have our copies now, allow OS release its copies */  	release_firmware(ucode_raw); -	complete(&drv->request_firmware_complete);  	drv->op_mode = iwl_dvm_ops.start(drv->trans, drv->cfg, &drv->fw);  	if (!drv->op_mode) -		goto out_free_fw; +		goto out_unbind; +	/* +	 * Complete the firmware request last so that +	 * a driver unbind (stop) doesn't run while we +	 * are doing the start() above. +	 */ +	complete(&drv->request_firmware_complete);  	return;   try_again:  | 
