Re: [PATCH] media: hantro: Fix PM reference leak in device_run()

From: yukuai (C)
Date: Mon May 17 2021 - 08:35:52 EST


On 2021/05/17 16:22, Johan Hovold wrote:
On Mon, May 17, 2021 at 04:15:16PM +0800, Yu Kuai 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@xxxxxxxxxx>
Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx>
---
drivers/staging/media/hantro/hantro_drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/media/hantro/hantro_drv.c b/drivers/staging/media/hantro/hantro_drv.c
index eea2009fa17b..7a6d3ef22096 100644
--- a/drivers/staging/media/hantro/hantro_drv.c
+++ b/drivers/staging/media/hantro/hantro_drv.c
@@ -160,7 +160,7 @@ static void device_run(void *priv)
src = hantro_get_src_buf(ctx);
dst = hantro_get_dst_buf(ctx);
- ret = pm_runtime_get_sync(ctx->dev->dev);
+ ret = pm_runtime_resume_and_get(ctx->dev->dev);
if (ret < 0) {
pm_runtime_put_noidle(ctx->dev->dev);

This is clearly broken as there is no PM usage count leak here.

Please try to understand the code you're changing before submitting any
more patches based on "robot" feedback.

Hi,

Sorry about the mistake, and thank you very much for your explanation

Yu Kuai

goto err_cancel_job;

Johan
.