From: jiawen <1298662399@qq.com>
exynos_fimd_resume() can fail when clk_prepare_enable() succeeds for
bus_clk but fails for lcd_clk. The function returns the error without
disabling bus_clk, leaving it prepared and enabled.
Disable bus_clk before returning the error to keep the clock state
balanced.
Signed-off-by: jiawen <1298662399@qq.com>
---
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -1325,6 +1325,7 @@
DRM_DEV_ERROR(dev,
"Failed to prepare_enable the lcd clk [%d]\n",
ret);
+ clk_disable_unprepare(ctx->bus_clk);
return ret;
}
… > Disable bus_clk before returning the error to keep the clock state > balanced. How do you think about to add any tags (like “Fixes” and “Cc”) accordingly? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v7.2#n145 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/stable-kernel-rules.rst?h=v7.2#n34 Regards, Markus
Hi, 2026년 8월 18일 (화) 오후 9:46, Jiawen Liu <1298662399@qq.com>님이 작성: > > From: jiawen <1298662399@qq.com> > > exynos_fimd_resume() can fail when clk_prepare_enable() succeeds for > bus_clk but fails for lcd_clk. The function returns the error without > disabling bus_clk, leaving it prepared and enabled. > > Disable bus_clk before returning the error to keep the clock state > balanced. > > Signed-off-by: jiawen <1298662399@qq.com> > --- > diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c > @@ -1325,6 +1325,7 @@ > DRM_DEV_ERROR(dev, > "Failed to prepare_enable the lcd clk [%d]\n", > ret); > + clk_disable_unprepare(ctx->bus_clk); The analysis and the fix are correct. exynos_fimd_suspend() disables both clocks, so leaving bus_clk enabled on this error path does leave the refcount unbalanced, and clk_disable_unprepare(ctx->bus_clk) restores the symmetry. Merged. Thanks, Inki Dae > return ret; > } > > >
© 2016 - 2026 Red Hat, Inc.