" IO %x, IRQ %u, MEM %p", iobase, irq, membase);
// check IO region
- if (check_region (iobase, AMB_EXTENT)) {
+ if (!request_region (iobase, AMB_EXTENT, DEV_LABEL)) {
PRINTK (KERN_ERR, "IO range already in use!");
return;
}
if (!dev) {
// perhaps we should be nice: deregister all adapters and abort?
PRINTK (KERN_ERR, "out of memory!");
+ release_region (iobase, AMB_EXTENT);
return;
}
// free_irq is at "endif"
} else {
- // reserve IO region
- request_region (iobase, AMB_EXTENT, DEV_LABEL);
-
dev->atm_dev = atm_dev_register (DEV_LABEL, &amb_ops, -1, NULL);
if (!dev->atm_dev) {
PRINTD (DBG_ERR, "failed to register Madge ATM adapter");
atm_dev_deregister (dev->atm_dev);
} /* atm_dev_register */
- release_region (iobase, AMB_EXTENT);
free_irq (irq, dev);
- } /* request_region, request_irq */
+ } /* request_irq */
amb_reset (dev, 0);
} /* amb_init */
kfree (dev);
+ release_region (iobase, AMB_EXTENT);
} /* kmalloc, end-of-fn */
PRINTD (DBG_FLOW, "amb_probe");