Takashi Iwai d16f44
From a03675497970a93fcf25d81d9d92a59c2d7377a7 Mon Sep 17 00:00:00 2001
Takashi Iwai d16f44
From: Wang Li <wangli74@huawei.com>
Takashi Iwai d16f44
Date: Fri, 9 Apr 2021 09:54:30 +0000
Takashi Iwai d16f44
Subject: [PATCH] spi: fsl-lpspi: Fix PM reference leak in lpspi_prepare_xfer_hardware()
Takashi Iwai d16f44
Git-commit: a03675497970a93fcf25d81d9d92a59c2d7377a7
Takashi Iwai d16f44
Patch-mainline: v5.13-rc1
Takashi Iwai d16f44
References: git-fixes
Takashi Iwai d16f44
Takashi Iwai d16f44
pm_runtime_get_sync will increment pm usage counter even it failed.
Takashi Iwai d16f44
Forgetting to putting operation will result in reference leak here.
Takashi Iwai d16f44
Fix it by replacing it with pm_runtime_resume_and_get to keep usage
Takashi Iwai d16f44
counter balanced.
Takashi Iwai d16f44
Takashi Iwai d16f44
Fixes: 944c01a889d9 ("spi: lpspi: enable runtime pm for lpspi")
Takashi Iwai d16f44
Reported-by: Hulk Robot <hulkci@huawei.com>
Takashi Iwai d16f44
Signed-off-by: Wang Li <wangli74@huawei.com>
Takashi Iwai d16f44
Link: https://lore.kernel.org/r/20210409095430.29868-1-wangli74@huawei.com
Takashi Iwai d16f44
Signed-off-by: Mark Brown <broonie@kernel.org>
Takashi Iwai d16f44
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai d16f44
Takashi Iwai d16f44
---
Takashi Iwai d16f44
 drivers/spi/spi-fsl-lpspi.c | 2 +-
Takashi Iwai d16f44
 1 file changed, 1 insertion(+), 1 deletion(-)
Takashi Iwai d16f44
Takashi Iwai d16f44
diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c
Takashi Iwai d16f44
index a2886ee44e4c..5d98611dd999 100644
Takashi Iwai d16f44
--- a/drivers/spi/spi-fsl-lpspi.c
Takashi Iwai d16f44
+++ b/drivers/spi/spi-fsl-lpspi.c
Takashi Iwai d16f44
@@ -200,7 +200,7 @@ static int lpspi_prepare_xfer_hardware(struct spi_controller *controller)
Takashi Iwai d16f44
 				spi_controller_get_devdata(controller);
Takashi Iwai d16f44
 	int ret;
Takashi Iwai d16f44
 
Takashi Iwai d16f44
-	ret = pm_runtime_get_sync(fsl_lpspi->dev);
Takashi Iwai d16f44
+	ret = pm_runtime_resume_and_get(fsl_lpspi->dev);
Takashi Iwai d16f44
 	if (ret < 0) {
Takashi Iwai d16f44
 		dev_err(fsl_lpspi->dev, "failed to enable clock\n");
Takashi Iwai d16f44
 		return ret;
Takashi Iwai d16f44
-- 
Takashi Iwai d16f44
2.26.2
Takashi Iwai d16f44