Re: [PATCH] i2c: thunderx: Fix some resource leak

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le 18/10/2021 à 23:15, Robert Richter a écrit :
On 16.10.21 10:48:26, Christophe JAILLET wrote:
We need to undo a 'pci_request_regions()' call in the error handling path
of the probe function and in the remove function.

Isn't that devm and thus not needed?

My bad, you are obviously right, sorry for the noise.

I was aware that 'pcim_enable_device()' was turning automagically 'pci_alloc_irq_vectors()' into a managed function. But I wasn't for 'pci_request_regions()'. Now I'm :)

CJ



Fixes: 22d40209de3b ("i2c: thunderx: Add i2c driver for ThunderX SOC")
Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx>
---
  drivers/i2c/busses/i2c-thunderx-pcidrv.c | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-thunderx-pcidrv.c b/drivers/i2c/busses/i2c-thunderx-pcidrv.c
index 12c90aa0900e..2d37096a6968 100644
--- a/drivers/i2c/busses/i2c-thunderx-pcidrv.c
+++ b/drivers/i2c/busses/i2c-thunderx-pcidrv.c
@@ -177,8 +177,10 @@ static int thunder_i2c_probe_pci(struct pci_dev *pdev,
  		return ret;

There is a pcim_enable_device() call before all that, so the regions
should be removed on device release, see pcim_release().

-Robert

  	i2c->twsi_base = pcim_iomap(pdev, 0, pci_resource_len(pdev, 0));
-	if (!i2c->twsi_base)
-		return -EINVAL;
+	if (!i2c->twsi_base) {
+		ret = -EINVAL;
+		goto err_release_regions;
+	}
thunder_i2c_clock_enable(dev, i2c);
  	ret = device_property_read_u32(dev, "clock-frequency", &i2c->twsi_freq);
@@ -231,6 +233,8 @@ static int thunder_i2c_probe_pci(struct pci_dev *pdev,
error:
  	thunder_i2c_clock_disable(dev, i2c->clk);
+err_release_regions:
+	pci_release_regions(pdev);
  	return ret;
  }
@@ -241,6 +245,7 @@ static void thunder_i2c_remove_pci(struct pci_dev *pdev)
  	thunder_i2c_smbus_remove(i2c);
  	thunder_i2c_clock_disable(&pdev->dev, i2c->clk);
  	i2c_del_adapter(&i2c->adap);
+	pci_release_regions(pdev);
  }
static const struct pci_device_id thunder_i2c_pci_id_table[] = {
--
2.30.2






[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux