Re: [PATCH v2] i2c: fix reference leak in MP2 PCI device

From: Andi Shyti
Date: Wed Oct 01 2025 - 19:56:42 EST


Hi,

> diff --git a/drivers/i2c/busses/i2c-amd-mp2-pci.c b/drivers/i2c/busses/i2c-amd-mp2-pci.c
> index ef7370d3dbea..60edbabc2986 100644
> --- a/drivers/i2c/busses/i2c-amd-mp2-pci.c
> +++ b/drivers/i2c/busses/i2c-amd-mp2-pci.c
> @@ -458,13 +458,16 @@ struct amd_mp2_dev *amd_mp2_find_device(void)
> {
> struct device *dev;
> struct pci_dev *pci_dev;
> + struct amd_mp2_dev *mp2_dev;
>
> dev = driver_find_next_device(&amd_mp2_pci_driver.driver, NULL);
> if (!dev)
> return NULL;
>
> pci_dev = to_pci_dev(dev);
> - return (struct amd_mp2_dev *)pci_get_drvdata(pci_dev);
> + mp2_dev = (struct amd_mp2_dev *)pci_get_drvdata(pci_dev);
> + put_device(dev);
> + return mp2_dev;

the patch is good, but I don't think you need to declare mp2_dev
because to_pci_dev(dev) should work even without hodling the
reference of dev.

I also have to agree with Markus that something like:

struct device *dev __free(put_device) = ...; /* it can also be NULL */

would work nicer.

Thanks,
Andi

> }
> EXPORT_SYMBOL_GPL(amd_mp2_find_device);
>
> --
> 2.17.1
>