lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH -next] pwm: img: Fix PM reference leak in img_pwm_enable()
Hello,

On Wed, May 12, 2021 at 11:57:17AM +0800, Zou Wei wrote:
> pm_runtime_get_sync will increment pm usage counter even it failed.
> Forgetting to putting operation will result in reference leak here.
> Fix it by replacing it with pm_runtime_resume_and_get to keep usage
> counter balanced.
>
> Reported-by: Hulk Robot <hulkci@huawei.com>
> Signed-off-by: Zou Wei <zou_wei@huawei.com>
> ---
> drivers/pwm/pwm-img.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pwm/pwm-img.c b/drivers/pwm/pwm-img.c
> index cc37054..11b16ec 100644
> --- a/drivers/pwm/pwm-img.c
> +++ b/drivers/pwm/pwm-img.c
> @@ -156,7 +156,7 @@ static int img_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
> struct img_pwm_chip *pwm_chip = to_img_pwm_chip(chip);
> int ret;
>
> - ret = pm_runtime_get_sync(chip->dev);
> + ret = pm_runtime_resume_and_get(chip->dev);
> if (ret < 0)
> return ret;

This patch looks right with my limited understanding of pm_runtime. A
similar issue in this driver was fixed in commit

ca162ce98110 ("pwm: img: Call pm_runtime_put() in pm_runtime_get_sync() failed case")

where (even though the commit log talks about pm_runtime_put()) a call
to pm_runtime_put_autosuspend() was added in the error path.

I added the PM guys to Cc, maybe they can advise about the right thing
to do here. Does it make sense to use the same idiom in both
img_pwm_enable() and img_pwm_config()?

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2021-05-12 06:53    [W:1.519 / U:0.004 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site