Re: [PATCH] drm/exynos: scaler: Fix runtime PM reference leak in scaler_commit

From: Inki Dae

Date: Mon Nov 09 2026 - 00:34:01 EST


Hi,

2026년 11월 2일 (월) 오후 7:48, Xiangwu Lai <laixiangwu@xxxxxxxxxxxxxxxxxxxx>님이 작성:
>
> scaler_commit() calls pm_runtime_resume_and_get(), but when the
> scaler_reset() soft reset does not complete it returns -EIO directly
> without dropping the reference. On the success path the reference is
> only dropped from the frame-end interrupt handler, and scaler->task
> is not yet assigned on the error path, so the interrupt handler will
> not drop it either.
>
> Each failed scaler commit therefore leaks one runtime PM reference and
> the scaler can never runtime suspend afterwards.
>
> This restores the pm_runtime_put() call that was already present in
> the error path before the conversion to
> pm_runtime_resume_and_get().
>
> Fixes: 445d3bed75de ("drm/exynos: use pm_runtime_resume_and_get()")
> Signed-off-by: Xiangwu Lai <laixiangwu@xxxxxxxxxxxxxxxxxxxx>

Merged.

Thanks,
Inki Dae

> ---
> drivers/gpu/drm/exynos/exynos_drm_scaler.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_scaler.c b/drivers/gpu/drm/exynos/exynos_drm_scaler.c
> index c8a1b6b0a..dc8189685 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_scaler.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_scaler.c
> @@ -372,8 +372,10 @@ static int scaler_commit(struct exynos_drm_ipp *ipp,
> if (ret < 0)
> return ret;
>
> - if (scaler_reset(scaler))
> + if (scaler_reset(scaler)) {
> + pm_runtime_put(scaler->dev);
> return -EIO;
> + }
>
> scaler->task = task;
>
>
>
>