patch-2.4.19 linux-2.4.19/drivers/acorn/scsi/acornscsi.c
Next file: linux-2.4.19/drivers/acorn/scsi/ecoscsi.c
Previous file: linux-2.4.19/drivers/acorn/net/etherh.c
Back to the patch index
Back to the overall index
- Lines: 45
- Date:
Fri Aug 2 17:39:43 2002
- Orig file:
linux-2.4.18/drivers/acorn/scsi/acornscsi.c
- Orig date:
Thu Oct 11 09:04:57 2001
diff -urN linux-2.4.18/drivers/acorn/scsi/acornscsi.c linux-2.4.19/drivers/acorn/scsi/acornscsi.c
@@ -2915,13 +2915,18 @@
ecs[count]->irqaddr = (char *)ioaddr(host->card.io_intr);
ecs[count]->irqmask = 0x0a;
- request_region(instance->io_port + 0x800, 2, "acornscsi(sbic)");
- request_region(host->card.io_intr, 1, "acornscsi(intr)");
- request_region(host->card.io_page, 1, "acornscsi(page)");
+ if (!request_region(instance->io_port + 0x800, 2, "acornscsi(sbic)"))
+ goto err_1;
+ if (!request_region(host->card.io_intr, 1, "acornscsi(intr)"))
+ goto err_2;
+ if (!request_region(host->card.io_page, 1, "acornscsi(page)"))
+ goto err_3;
#ifdef USE_DMAC
- request_region(host->dma.io_port, 256, "acornscsi(dmac)");
+ if (!request_region(host->dma.io_port, 256, "acornscsi(dmac)"))
+ goto err_4;
#endif
- request_region(instance->io_port, 2048, "acornscsi(ram)");
+ if (!request_region(instance->io_port, 2048, "acornscsi(ram)"))
+ goto err_5;
if (request_irq(host->scsi.irq, acornscsi_intr, SA_INTERRUPT, "acornscsi", host)) {
printk(KERN_CRIT "scsi%d: IRQ%d not free, interrupts disabled\n",
@@ -2934,6 +2939,20 @@
++count;
}
return count;
+
+err_5:
+#ifdef USE_DMAC
+ release_region(host->dma.io_port, 256);
+#endif
+err_4:
+ release_region(host->card.io_page, 1);
+err_3:
+ release_region(host->card.io_intr, 1);
+err_2:
+ release_region(instance->io_port + 0x800, 2);
+err_1:
+ scsi_unregister(instance);
+ return 0;
}
/*
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)