2020-06-13 23:18:09

by Qiushi Wu

[permalink] [raw]
Subject: [PATCH] media: rockchip/rga: Fix a reference count leak.

From: Qiushi Wu <[email protected]>

pm_runtime_get_sync() increments the runtime PM usage counter even
when it returns an error code. Thus call pm_runtime_put_noidle()
if pm_runtime_get_sync() fails.

Fixes: f7e7b48e6d79 ("[media] rockchip/rga: v4l2 m2m support")
Signed-off-by: Qiushi Wu <[email protected]>
---
drivers/media/platform/rockchip/rga/rga-buf.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/media/platform/rockchip/rga/rga-buf.c b/drivers/media/platform/rockchip/rga/rga-buf.c
index 36b821ccc1db..bf9a75b75083 100644
--- a/drivers/media/platform/rockchip/rga/rga-buf.c
+++ b/drivers/media/platform/rockchip/rga/rga-buf.c
@@ -81,6 +81,7 @@ static int rga_buf_start_streaming(struct vb2_queue *q, unsigned int count)

ret = pm_runtime_get_sync(rga->dev);
if (ret < 0) {
+ pm_runtime_put_noidle(rga->dev);
rga_buf_return_buffers(q, VB2_BUF_STATE_QUEUED);
return ret;
}
--
2.17.1


2020-06-18 12:33:17

by Heiko Stübner

[permalink] [raw]
Subject: Re: [PATCH] media: rockchip/rga: Fix a reference count leak.

Am Sonntag, 14. Juni 2020, 01:13:49 CEST schrieb [email protected]:
> From: Qiushi Wu <[email protected]>
>
> pm_runtime_get_sync() increments the runtime PM usage counter even
> when it returns an error code. Thus call pm_runtime_put_noidle()
> if pm_runtime_get_sync() fails.
>
> Fixes: f7e7b48e6d79 ("[media] rockchip/rga: v4l2 m2m support")
> Signed-off-by: Qiushi Wu <[email protected]>

Reviewed-by: Heiko Stuebner <[email protected]>

> ---
> drivers/media/platform/rockchip/rga/rga-buf.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/media/platform/rockchip/rga/rga-buf.c b/drivers/media/platform/rockchip/rga/rga-buf.c
> index 36b821ccc1db..bf9a75b75083 100644
> --- a/drivers/media/platform/rockchip/rga/rga-buf.c
> +++ b/drivers/media/platform/rockchip/rga/rga-buf.c
> @@ -81,6 +81,7 @@ static int rga_buf_start_streaming(struct vb2_queue *q, unsigned int count)
>
> ret = pm_runtime_get_sync(rga->dev);
> if (ret < 0) {
> + pm_runtime_put_noidle(rga->dev);
> rga_buf_return_buffers(q, VB2_BUF_STATE_QUEUED);
> return ret;
> }
>