if (!request_region(config->ibbase, cb7210_iosize, DRV_NAME)) {
dev_err(board->gpib_dev, "ioports starting at 0x%x are already in use\n",
config->ibbase);
- return -EBUSY;
+ retval = -EBUSY;
+ goto err_release_region;
}
nec_priv->iobase = config->ibbase;
cb_priv->fifo_iobase = nec7210_iobase(cb_priv);
// install interrupt handler
if (request_irq(config->ibirq, cb7210_interrupt, isr_flags, DRV_NAME, board)) {
dev_err(board->gpib_dev, "failed to obtain IRQ %d\n", config->ibirq);
- return -EBUSY;
+ retval = -EBUSY;
+ goto err_release_region;
}
cb_priv->irq = config->ibirq;
return cb7210_init(cb_priv, board);
+
+err_release_region:
+ release_region(nec7210_iobase(cb_priv), cb7210_iosize);
+ return retval;
}
static void cb_isa_detach(struct gpib_board *board)