From: Jeff Garzik Signed-off-by: Jeff Garzik Cc: James Bottomley Signed-off-by: Andrew Morton --- drivers/scsi/aha1740.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff -puN drivers/scsi/aha1740.c~scsi-aha1740-handle-scsi-api-errors drivers/scsi/aha1740.c --- a/drivers/scsi/aha1740.c~scsi-aha1740-handle-scsi-api-errors +++ a/drivers/scsi/aha1740.c @@ -586,7 +586,7 @@ static struct scsi_host_template aha1740 static int aha1740_probe (struct device *dev) { - int slotbase; + int slotbase, rc; unsigned int irq_level, irq_type, translation; struct Scsi_Host *shpnt; struct aha1740_hostdata *host; @@ -641,10 +641,16 @@ static int aha1740_probe (struct device } eisa_set_drvdata (edev, shpnt); - scsi_add_host (shpnt, dev); /* XXX handle failure */ + + rc = scsi_add_host (shpnt, dev); + if (rc) + goto err_irq; + scsi_scan_host (shpnt); return 0; + err_irq: + free_irq(irq_level, shpnt); err_unmap: dma_unmap_single (&edev->dev, host->ecb_dma_addr, sizeof (host->ecb), DMA_BIDIRECTIONAL); _