diff mbox series

mmc: sdhci-pci: Fix possible memory leak caused by missing pci_dev_put()

Message ID 20221114083100.149200-1-wangxiongfeng2@huawei.com (mailing list archive)
State New, archived
Headers show
Series mmc: sdhci-pci: Fix possible memory leak caused by missing pci_dev_put() | expand

Commit Message

Xiongfeng Wang Nov. 14, 2022, 8:31 a.m. UTC
pci_get_device() will increase the reference count for the returned
pci_dev. We need to use pci_dev_put() to decrease the reference count
before amd_probe() returns. There is no problem for the 'smbus_dev ==
NULL' branch because pci_dev_put() can also handle the NULL input
parameter case.

Fixes: 659c9bc114a8 ("mmc: sdhci-pci: Build o2micro support in the same module")
Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
---
 drivers/mmc/host/sdhci-pci-core.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Ulf Hansson Nov. 16, 2022, 4:17 p.m. UTC | #1
On Mon, 14 Nov 2022 at 09:12, Xiongfeng Wang <wangxiongfeng2@huawei.com> wrote:
>
> pci_get_device() will increase the reference count for the returned
> pci_dev. We need to use pci_dev_put() to decrease the reference count
> before amd_probe() returns. There is no problem for the 'smbus_dev ==
> NULL' branch because pci_dev_put() can also handle the NULL input
> parameter case.
>
> Fixes: 659c9bc114a8 ("mmc: sdhci-pci: Build o2micro support in the same module")
> Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>

Applied for fixes and by adding a stable tag, thanks!

Kind regards
Uffe


> ---
>  drivers/mmc/host/sdhci-pci-core.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
> index 34ea1acbb3cc..28dc65023fa9 100644
> --- a/drivers/mmc/host/sdhci-pci-core.c
> +++ b/drivers/mmc/host/sdhci-pci-core.c
> @@ -1749,6 +1749,8 @@ static int amd_probe(struct sdhci_pci_chip *chip)
>                 }
>         }
>
> +       pci_dev_put(smbus_dev);
> +
>         if (gen == AMD_CHIPSET_BEFORE_ML || gen == AMD_CHIPSET_CZ)
>                 chip->quirks2 |= SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD;
>
> --
> 2.20.1
>
diff mbox series

Patch

diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
index 34ea1acbb3cc..28dc65023fa9 100644
--- a/drivers/mmc/host/sdhci-pci-core.c
+++ b/drivers/mmc/host/sdhci-pci-core.c
@@ -1749,6 +1749,8 @@  static int amd_probe(struct sdhci_pci_chip *chip)
 		}
 	}
 
+	pci_dev_put(smbus_dev);
+
 	if (gen == AMD_CHIPSET_BEFORE_ML || gen == AMD_CHIPSET_CZ)
 		chip->quirks2 |= SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD;