2020-11-23 10:18:01

by Zhang Qilong

[permalink] [raw]
Subject: [PATCH] HSI: Fix PM usage counter unbalance in ssi_hw_init

pm_runtime_get_sync will increment pm usage counter
even it failed. Forgetting to putting operation will
result in reference leak here. We fix it by replacing
it with pm_runtime_resume_and_get to keep usage counter
balanced.

Fixes: b209e047bc743 ("HSI: Introduce OMAP SSI driver")
Signed-off-by: Zhang Qilong <[email protected]>
---
drivers/hsi/controllers/omap_ssi_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/hsi/controllers/omap_ssi_core.c b/drivers/hsi/controllers/omap_ssi_core.c
index fa69b94debd9..b4ac2f8cb9f9 100644
--- a/drivers/hsi/controllers/omap_ssi_core.c
+++ b/drivers/hsi/controllers/omap_ssi_core.c
@@ -424,7 +424,7 @@ static int ssi_hw_init(struct hsi_controller *ssi)
struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi);
int err;

- err = pm_runtime_get_sync(ssi->device.parent);
+ err = pm_runtime_resume_and_get(ssi->device.parent);
if (err < 0) {
dev_err(&ssi->device, "runtime PM failed %d\n", err);
return err;
--
2.25.4


2021-01-02 00:46:40

by Sebastian Reichel

[permalink] [raw]
Subject: Re: [PATCH] HSI: Fix PM usage counter unbalance in ssi_hw_init

Hi,

On Mon, Nov 23, 2020 at 06:18:27PM +0800, Zhang Qilong wrote:
> pm_runtime_get_sync will increment pm usage counter
> even it failed. Forgetting to putting operation will
> result in reference leak here. We fix it by replacing
> it with pm_runtime_resume_and_get to keep usage counter
> balanced.
>
> Fixes: b209e047bc743 ("HSI: Introduce OMAP SSI driver")
> Signed-off-by: Zhang Qilong <[email protected]>
> ---

Thanks, queued.

-- Sebastian

> drivers/hsi/controllers/omap_ssi_core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/hsi/controllers/omap_ssi_core.c b/drivers/hsi/controllers/omap_ssi_core.c
> index fa69b94debd9..b4ac2f8cb9f9 100644
> --- a/drivers/hsi/controllers/omap_ssi_core.c
> +++ b/drivers/hsi/controllers/omap_ssi_core.c
> @@ -424,7 +424,7 @@ static int ssi_hw_init(struct hsi_controller *ssi)
> struct omap_ssi_controller *omap_ssi = hsi_controller_drvdata(ssi);
> int err;
>
> - err = pm_runtime_get_sync(ssi->device.parent);
> + err = pm_runtime_resume_and_get(ssi->device.parent);
> if (err < 0) {
> dev_err(&ssi->device, "runtime PM failed %d\n", err);
> return err;
> --
> 2.25.4
>


Attachments:
(No filename) (1.18 kB)
signature.asc (849.00 B)
Download all attachments