|
@@ -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:
|