From 14e9c83989574e552b363526cc986c0f97ab951e Mon Sep 17 00:00:00 2001 From: Dave Jones Date: Fri, 10 Sep 2004 05:39:48 -0400 Subject: [PATCH] [PATCH] plug leaks in aic79xx Spotted with the source checker from Coverity.com. Signed-off-by: Dave Jones Signed-off-by: James Bottomley --- drivers/scsi/aic7xxx/aic79xx_osm.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/scsi/aic7xxx/aic79xx_osm.c b/drivers/scsi/aic7xxx/aic79xx_osm.c index c9f3a52f1a33e..9ce30fe49bbdf 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm.c @@ -1560,6 +1560,8 @@ ahd_linux_dev_reset(Scsi_Cmnd *cmd) ahd = *(struct ahd_softc **)cmd->device->host->hostdata; recovery_cmd = malloc(sizeof(struct scsi_cmnd), M_DEVBUF, M_WAITOK); + if (!recovery_cmd) + return (FAILED); memset(recovery_cmd, 0, sizeof(struct scsi_cmnd)); recovery_cmd->device = cmd->device; recovery_cmd->scsi_done = ahd_linux_dev_reset_complete; @@ -1575,10 +1577,12 @@ ahd_linux_dev_reset(Scsi_Cmnd *cmd) cmd->device->lun, /*alloc*/FALSE); if (dev == NULL) { ahd_midlayer_entrypoint_unlock(ahd, &s); + kfree(recovery_cmd); return (FAILED); } if ((scb = ahd_get_scb(ahd, AHD_NEVER_COL_IDX)) == NULL) { ahd_midlayer_entrypoint_unlock(ahd, &s); + kfree(recovery_cmd); return (FAILED); } tinfo = ahd_fetch_transinfo(ahd, 'A', ahd->our_id, @@ -1773,6 +1777,7 @@ ahd_dmamem_alloc(struct ahd_softc *ahd, bus_dma_tag_t dmat, void** vaddr, if (ahd->dev_softc != NULL) if (ahd_pci_set_dma_mask(ahd->dev_softc, 0xFFFFFFFF)) { printk(KERN_WARNING "aic79xx: No suitable DMA available.\n"); + kfree(map); return (ENODEV); } *vaddr = pci_alloc_consistent(ahd->dev_softc, @@ -1781,6 +1786,7 @@ ahd_dmamem_alloc(struct ahd_softc *ahd, bus_dma_tag_t dmat, void** vaddr, if (ahd_pci_set_dma_mask(ahd->dev_softc, ahd->platform_data->hw_dma_mask)) { printk(KERN_WARNING "aic79xx: No suitable DMA available.\n"); + kfree(map); return (ENODEV); } #else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) */ -- 2.53.0