*Currently, the error handling code is organized to free dma_addr_out, dma_addr_in and then pci_addr_out, pci_addr_in. Since dma_addr_out and pci_addr_out are allocated first and then dma_addr_in and pci_addr_in, the error handling code is reorganized to free the in variables first and then the out variables. Labels were renamed and gotos altered accordingly.
*At the point of the goto free_pci, neither the in nor the out variables are allocated and hence no freeing required. The free_pci label is removed and the goto free_pci is replaced with goto out. Signed-off-by: Tina Johnson <tinajohnson.1...@gmail.com> Acked-by: Julia Lawall <julia.law...@lip6.fr> --- drivers/scsi/mpt2sas/mpt2sas_transport.c | 31 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/scsi/mpt2sas/mpt2sas_transport.c b/drivers/scsi/mpt2sas/mpt2sas_transport.c index b283140..1740506 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_transport.c +++ b/drivers/scsi/mpt2sas/mpt2sas_transport.c @@ -1966,7 +1966,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, printk(MPT2SAS_INFO_FMT "%s(): DMA Addr out = NULL\n", ioc->name, __func__); rc = -ENOMEM; - goto free_pci; + goto out; } } @@ -1979,7 +1979,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, printk(MPT2SAS_INFO_FMT "%s(): PCI Addr in = NULL\n", ioc->name, __func__); rc = -ENOMEM; - goto unmap; + goto release_out; } } else { dma_addr_in = pci_map_single(ioc->pdev, bio_data(rsp->bio), @@ -1988,7 +1988,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, printk(MPT2SAS_INFO_FMT "%s(): DMA Addr in = NULL\n", ioc->name, __func__); rc = -ENOMEM; - goto unmap; + goto release_out; } } @@ -2000,7 +2000,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, "%s: failed due to ioc not operational\n", ioc->name, __func__); rc = -EFAULT; - goto unmap; + goto release_in; } ssleep(1); ioc_state = mpt2sas_base_get_iocstate(ioc, 1); @@ -2017,7 +2017,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, printk(MPT2SAS_ERR_FMT "%s: failed obtaining a smid\n", ioc->name, __func__); rc = -EAGAIN; - goto unmap; + goto release_in; } rc = 0; @@ -2132,22 +2132,21 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy, rc = -ETIMEDOUT; } - unmap: - if (dma_addr_out) - pci_unmap_single(ioc->pdev, dma_addr_out, blk_rq_bytes(req), - PCI_DMA_BIDIRECTIONAL); + release_in: if (dma_addr_in) pci_unmap_single(ioc->pdev, dma_addr_in, blk_rq_bytes(rsp), - PCI_DMA_BIDIRECTIONAL); + PCI_DMA_BIDIRECTIONAL); + if (pci_addr_in) + pci_free_consistent(ioc->pdev, blk_rq_bytes(rsp), pci_addr_in, + pci_dma_in); - free_pci: + release_out: + if (dma_addr_out) + pci_unmap_single(ioc->pdev, dma_addr_out, blk_rq_bytes(req), + PCI_DMA_BIDIRECTIONAL); if (pci_addr_out) pci_free_consistent(ioc->pdev, blk_rq_bytes(req), pci_addr_out, - pci_dma_out); - - if (pci_addr_in) - pci_free_consistent(ioc->pdev, blk_rq_bytes(rsp), pci_addr_in, - pci_dma_in); + pci_dma_out); out: ioc->transport_cmds.status = MPT2_CMD_NOT_USED; -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/