]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: megaraid_sas: Bail out the driver load if ld_list_query fails
authorShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Fri, 10 Feb 2017 08:59:33 +0000 (00:59 -0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 1 Jun 2017 21:06:10 +0000 (14:06 -0700)
Orabug: 26096381

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: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 72bff2d1d0c9cb8923a2ffdeaafa40deaed0f671)
Signed-off-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
Signed-off-by: Kirtikar Kashyap <kirtikar.kashyap@oracle.com>
Reviewed-by: Dhaval Giani <dhaval.giani@oracle.com>
Conflicts:
drivers/scsi/megaraid/megaraid_sas_base.c

drivers/scsi/megaraid/megaraid_sas_base.c

index a9abbadeeec96cd58330ed258c9bd990f88a411e..c4126c6e37791d50fd3235ada6a57a7e00da570a 100644 (file)
@@ -5264,7 +5264,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
                (MEGASAS_MAX_PD * sizeof(struct megasas_pd_list)));
        if (megasas_get_pd_list(instance) < 0) {
                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);
@@ -5300,7 +5300,7 @@ static int megasas_init_fw(struct megasas_instance *instance)
 
        if (megasas_ld_list_query(instance,
                                  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
@@ -5419,10 +5419,8 @@ static int megasas_init_fw(struct megasas_instance *instance)
 
 fail_get_ld_pd_list:
        instance->instancet->disable_intr(instance);
-fail_get_pd_list:
-       instance->instancet->disable_intr(instance);
-       megasas_destroy_irqs(instance);
 fail_init_adapter:
+       megasas_destroy_irqs(instance);
        if (instance->msix_vectors)
                pci_disable_msix(instance->pdev);
        instance->msix_vectors = 0;
@@ -5431,9 +5429,11 @@ fail_ready_state:
        instance->ctrl_info = NULL;
        iounmap(instance->reg_set);
 
-      fail_ioremap:
+fail_ioremap:
        pci_release_selected_regions(instance->pdev, 1<<instance->bar);
 
+       dev_err(&instance->pdev->dev, "Failed from %s %d\n",
+               __func__, __LINE__);
        return -EINVAL;
 }