OSDN Git Service

scsi: ipr: Fix missing/incorrect resource cleanup in error case
authorChengguang Xu <cgxu519@mykernel.net>
Sun, 29 May 2022 15:34:53 +0000 (23:34 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 8 Jun 2022 02:05:14 +0000 (22:05 -0400)
Fix missing resource cleanup (when '(--i) == 0') for error case in
ipr_alloc_mem() and skip incorrect resource cleanup (when '(--i) == 0') for
error case in ipr_request_other_msi_irqs() because variable i started from
1.

Link: https://lore.kernel.org/r/20220529153456.4183738-4-cgxu519@mykernel.net
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: Chengguang Xu <cgxu519@mykernel.net>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ipr.c

index 256ec6d..9d01a3e 100644 (file)
@@ -9795,7 +9795,7 @@ static int ipr_alloc_mem(struct ipr_ioa_cfg *ioa_cfg)
                                        GFP_KERNEL);
 
                if (!ioa_cfg->hrrq[i].host_rrq)  {
-                       while (--i > 0)
+                       while (--i >= 0)
                                dma_free_coherent(&pdev->dev,
                                        sizeof(u32) * ioa_cfg->hrrq[i].size,
                                        ioa_cfg->hrrq[i].host_rrq,
@@ -10068,7 +10068,7 @@ static int ipr_request_other_msi_irqs(struct ipr_ioa_cfg *ioa_cfg,
                        ioa_cfg->vectors_info[i].desc,
                        &ioa_cfg->hrrq[i]);
                if (rc) {
-                       while (--i >= 0)
+                       while (--i > 0)
                                free_irq(pci_irq_vector(pdev, i),
                                        &ioa_cfg->hrrq[i]);
                        return rc;