When DAC960_PD_hw_init() and DAC960_P_hw_init() fail after successfully
requesting the I/O region with request_region(), the region is not
released before returning. This causes a resource leak.
Fixes: 081ff398c56c ("scsi: myrb: Add Mylex RAID controller (block interface)")
Signed-off-by: Hongling Zeng <zenghongling@kylinos.cn>
---
Change in v2:
-The fix is to clear cb->io_addr when request_region() fails, matching
the same fix already applied to DAC960_P_hw_init.
---
drivers/scsi/myrb.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/scsi/myrb.c b/drivers/scsi/myrb.c
index 3678b66310ed..591ba70a0579 100644
--- a/drivers/scsi/myrb.c
+++ b/drivers/scsi/myrb.c
@@ -3115,6 +3115,7 @@ static int DAC960_PD_hw_init(struct pci_dev *pdev,
if (!request_region(cb->io_addr, 0x80, "myrb")) {
dev_err(&pdev->dev, "IO port 0x%lx busy\n",
(unsigned long)cb->io_addr);
+ cb->io_addr = 0;
return -EBUSY;
}
DAC960_PD_disable_intr(base);
@@ -3281,6 +3282,7 @@ static int DAC960_P_hw_init(struct pci_dev *pdev,
if (!request_region(cb->io_addr, 0x80, "myrb")) {
dev_err(&pdev->dev, "IO port 0x%lx busy\n",
(unsigned long)cb->io_addr);
+ cb->io_addr = 0;
return -EBUSY;
}
DAC960_PD_disable_intr(base);
--
2.25.1