mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
gpib: cb7210: Fix region leak when request_irq fails
When request_irq() fails, the region allocated by request_region()
is not released. Fix this by adding an error handling path with
proper goto labels to release the region.
Fixes: e9dc69956d ("staging: gpib: Add Computer Boards GPIB driver")
Closes: https://lore.kernel.org/oe-kbuild-all/202605160620.ReBOadPX-lkp@intel.com/
Signed-off-by: Hongling Zeng <zenghongling@kylinos.cn>
Cc: stable <stable@kernel.org>
Link: https://patch.msgid.link/20260518022939.16881-1-zenghongling@kylinos.cn
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
ef15ccbb3e
commit
2eae90a457
|
|
@ -1049,7 +1049,8 @@ static int cb_isa_attach(struct gpib_board *board, const struct gpib_board_confi
|
|||
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);
|
||||
|
|
@ -1062,11 +1063,16 @@ static int cb_isa_attach(struct gpib_board *board, const struct gpib_board_confi
|
|||
// 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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user