summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/mca_53c9x.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/mca_53c9x.c')
-rw-r--r--drivers/scsi/mca_53c9x.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/scsi/mca_53c9x.c b/drivers/scsi/mca_53c9x.c
index 9755f8ee7..6639a3a0a 100644
--- a/drivers/scsi/mca_53c9x.c
+++ b/drivers/scsi/mca_53c9x.c
@@ -156,6 +156,8 @@ int mca_esp_detect(Scsi_Host_Template *tpnt)
"NCR 53c9x SCSI", esp_intr))
{
printk("Unable to request IRQ %d.\n", esp->irq);
+ esp_deallocate(esp);
+ scsi_unregister(esp->ehost);
return 0;
}
@@ -163,6 +165,8 @@ int mca_esp_detect(Scsi_Host_Template *tpnt)
printk("Unable to request DMA channel %d.\n",
esp->dma);
free_irq(esp->irq, esp_intr);
+ esp_deallocate(esp);
+ scsi_unregister(esp->ehost);
return 0;
}
@@ -259,7 +263,7 @@ int mca_esp_release(struct Scsi_Host *host)
struct NCR_ESP *esp = (struct NCR_ESP *)host->hostdata;
unsigned char tmp_byte;
-
+ esp_deallocate(esp);
/*
* Tell the 86C01 to stop sending interrupts
*/
@@ -271,7 +275,7 @@ int mca_esp_release(struct Scsi_Host *host)
free_irq(esp->irq, esp_intr);
free_dma(esp->dma);
- mca_mark_as_unused(esp->eregs->slot);
+ mca_mark_as_unused(esp->slot);
return 0;
}