Commit 72bff2d1 authored by Shivasharan S's avatar Shivasharan S Committed by Martin K. Petersen

scsi: megaraid_sas: Bail out the driver load if ld_list_query fails

Error handling: Bail out the driver load if key FW cmds (LD_LIST) are
not return successful.  Clean up error handling in megasas_init_fw.
Signed-off-by: default avatarKashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: default avatarShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Reviewed-by: default avatarTomas Henzl <thenzl@redhat.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 7a7ae4f1
...@@ -5352,7 +5352,7 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -5352,7 +5352,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
(MEGASAS_MAX_PD * sizeof(struct megasas_pd_list))); (MEGASAS_MAX_PD * sizeof(struct megasas_pd_list)));
if (megasas_get_pd_list(instance) < 0) { if (megasas_get_pd_list(instance) < 0) {
dev_err(&instance->pdev->dev, "failed to get PD list\n"); dev_err(&instance->pdev->dev, "failed to get PD list\n");
goto fail_get_pd_list; goto fail_get_ld_pd_list;
} }
memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS); memset(instance->ld_ids, 0xff, MEGASAS_MAX_LD_IDS);
...@@ -5388,7 +5388,7 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -5388,7 +5388,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
if (megasas_ld_list_query(instance, if (megasas_ld_list_query(instance,
MR_LD_QUERY_TYPE_EXPOSED_TO_HOST)) MR_LD_QUERY_TYPE_EXPOSED_TO_HOST))
megasas_get_ld_list(instance); goto fail_get_ld_pd_list;
/* /*
* Compute the max allowed sectors per IO: The controller info has two * Compute the max allowed sectors per IO: The controller info has two
...@@ -5507,8 +5507,6 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -5507,8 +5507,6 @@ static int megasas_init_fw(struct megasas_instance *instance)
fail_get_ld_pd_list: fail_get_ld_pd_list:
instance->instancet->disable_intr(instance); instance->instancet->disable_intr(instance);
fail_get_pd_list:
instance->instancet->disable_intr(instance);
fail_init_adapter: fail_init_adapter:
megasas_destroy_irqs(instance); megasas_destroy_irqs(instance);
fail_setup_irqs: fail_setup_irqs:
...@@ -5520,9 +5518,11 @@ static int megasas_init_fw(struct megasas_instance *instance) ...@@ -5520,9 +5518,11 @@ static int megasas_init_fw(struct megasas_instance *instance)
instance->ctrl_info = NULL; instance->ctrl_info = NULL;
iounmap(instance->reg_set); iounmap(instance->reg_set);
fail_ioremap: fail_ioremap:
pci_release_selected_regions(instance->pdev, 1<<instance->bar); pci_release_selected_regions(instance->pdev, 1<<instance->bar);
dev_err(&instance->pdev->dev, "Failed from %s %d\n",
__func__, __LINE__);
return -EINVAL; return -EINVAL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment