]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: be2iscsi: Fix error return code
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Fri, 26 Aug 2016 09:39:06 +0000 (15:09 +0530)
committerDhaval Giani <dhaval.giani@oracle.com>
Wed, 8 Mar 2017 00:55:40 +0000 (19:55 -0500)
Orabug: 25655127

We know that 'ret' is not an error code because it has been tested a few
lines above.  So, if one of these function fails, 0 will be returned
instead of an error code.  Return -ENOMEM instead.

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
'ret' needs to be set with error code if hba_setup_cid_tbls fails.

Signed-off-by: Jitendra Bhivare <jitendra.bhivare@broadcom.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Ethan Zhao <ethan.zhao@oracle.com>
Signed-off-by: Dhaval Giani <dhaval.giani@oracle.com>
drivers/scsi/be2iscsi/be_main.c

index 85e14326e689002694924eefaa4fc1ad26497991..0bdf88547fba7953eda4095429b4fd7f48b9a30e 100644 (file)
@@ -3020,8 +3020,8 @@ static int be_fill_queue(struct be_queue_info *q,
 static int beiscsi_create_eqs(struct beiscsi_hba *phba,
                             struct hwi_context_memory *phwi_context)
 {
+       int ret = -ENOMEM, eq_for_mcc;
        unsigned int i, num_eq_pages;
-       int ret = 0, eq_for_mcc;
        struct be_queue_info *eq;
        struct be_dma_mem *mem;
        void *eq_vaddress;
@@ -3039,8 +3039,8 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
                mem = &eq->dma_mem;
                phwi_context->be_eq[i].phba = phba;
                eq_vaddress = pci_alloc_consistent(phba->pcidev,
-                                                    num_eq_pages * PAGE_SIZE,
-                                                    &paddr);
+                                                  num_eq_pages * PAGE_SIZE,
+                                                  &paddr);
                if (!eq_vaddress)
                        goto create_eq_error;
 
@@ -3068,6 +3068,7 @@ static int beiscsi_create_eqs(struct beiscsi_hba *phba,
                            phwi_context->be_eq[i].q.id);
        }
        return 0;
+
 create_eq_error:
        for (i = 0; i < (phba->num_cpus + eq_for_mcc); i++) {
                eq = &phwi_context->be_eq[i].q;
@@ -3084,11 +3085,11 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
                             struct hwi_context_memory *phwi_context)
 {
        unsigned int i, num_cq_pages;
-       int ret = 0;
        struct be_queue_info *cq, *eq;
        struct be_dma_mem *mem;
        struct be_eq_obj *pbe_eq;
        void *cq_vaddress;
+       int ret = -ENOMEM;
        dma_addr_t paddr;
 
        num_cq_pages = PAGES_REQUIRED(phba->params.num_cq_entries * \
@@ -3102,10 +3103,11 @@ static int beiscsi_create_cqs(struct beiscsi_hba *phba,
                pbe_eq->phba = phba;
                mem = &cq->dma_mem;
                cq_vaddress = pci_alloc_consistent(phba->pcidev,
-                                                    num_cq_pages * PAGE_SIZE,
-                                                    &paddr);
+                                                  num_cq_pages * PAGE_SIZE,
+                                                  &paddr);
                if (!cq_vaddress)
                        goto create_cq_error;
+
                ret = be_fill_queue(cq, phba->params.num_cq_entries,
                                    sizeof(struct sol_cqe), cq_vaddress);
                if (ret) {
@@ -3140,7 +3142,6 @@ create_cq_error:
                                            mem->va, mem->dma);
        }
        return ret;
-
 }
 
 static int
@@ -4231,7 +4232,8 @@ static int beiscsi_init_port(struct beiscsi_hba *phba)
                goto do_cleanup_ctrlr;
        }
 
-       if (hba_setup_cid_tbls(phba)) {
+       ret = hba_setup_cid_tbls(phba);
+       if (ret < 0) {
                beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
                            "BM_%d : Failed in hba_setup_cid_tbls\n");
                kfree(phba->io_sgl_hndl_base);
@@ -5629,7 +5631,7 @@ static int beiscsi_dev_probe(struct pci_dev *pcidev,
        struct hwi_context_memory *phwi_context;
        struct be_eq_obj *pbe_eq;
        unsigned int s_handle;
-       int ret = 0, i;
+       int ret, i;
 
        ret = beiscsi_enable_pci(pcidev);
        if (ret < 0) {
@@ -5642,6 +5644,7 @@ static int beiscsi_dev_probe(struct pci_dev *pcidev,
        if (!phba) {
                dev_err(&pcidev->dev,
                        "beiscsi_dev_probe - Failed in beiscsi_hba_alloc\n");
+               ret = -ENOMEM;
                goto disable_pci;
        }
 
@@ -5748,6 +5751,7 @@ static int beiscsi_dev_probe(struct pci_dev *pcidev,
                beiscsi_log(phba, KERN_ERR, BEISCSI_LOG_INIT,
                            "BM_%d : beiscsi_dev_probe-"
                            "Failed to allocate work queue\n");
+               ret = -ENOMEM;
                goto free_twq;
        }