提交 89c5f080 编写于 作者: J Jian Zhang 提交者: Zheng Zengkai

drm/exynos/exynos7_drm_decon: free resources when clk_set_parent() failed.

stable inclusion
from stable-v5.10.137
commit 5713b0be6dd94210413404dd8a71a40bb83654b1
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I60PLB

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=5713b0be6dd94210413404dd8a71a40bb83654b1

--------------------------------

[ Upstream commit 48b92777 ]

In exynos7_decon_resume, When it fails, we must use clk_disable_unprepare()
to free resource that have been used.

Fixes: 6f83d208 ("drm/exynos: use DRM_DEV_ERROR to print out error
message")
Reported-by: NHulk Robot <hulkci@huawei.com>
Signed-off-by: NJian Zhang <zhangjian210@huawei.com>
Signed-off-by: NInki Dae <inki.dae@samsung.com>
Signed-off-by: NSasha Levin <sashal@kernel.org>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
Reviewed-by: NWei Li <liwei391@huawei.com>
上级 8b3cd131
...@@ -800,31 +800,40 @@ static int exynos7_decon_resume(struct device *dev) ...@@ -800,31 +800,40 @@ static int exynos7_decon_resume(struct device *dev)
if (ret < 0) { if (ret < 0) {
DRM_DEV_ERROR(dev, "Failed to prepare_enable the pclk [%d]\n", DRM_DEV_ERROR(dev, "Failed to prepare_enable the pclk [%d]\n",
ret); ret);
return ret; goto err_pclk_enable;
} }
ret = clk_prepare_enable(ctx->aclk); ret = clk_prepare_enable(ctx->aclk);
if (ret < 0) { if (ret < 0) {
DRM_DEV_ERROR(dev, "Failed to prepare_enable the aclk [%d]\n", DRM_DEV_ERROR(dev, "Failed to prepare_enable the aclk [%d]\n",
ret); ret);
return ret; goto err_aclk_enable;
} }
ret = clk_prepare_enable(ctx->eclk); ret = clk_prepare_enable(ctx->eclk);
if (ret < 0) { if (ret < 0) {
DRM_DEV_ERROR(dev, "Failed to prepare_enable the eclk [%d]\n", DRM_DEV_ERROR(dev, "Failed to prepare_enable the eclk [%d]\n",
ret); ret);
return ret; goto err_eclk_enable;
} }
ret = clk_prepare_enable(ctx->vclk); ret = clk_prepare_enable(ctx->vclk);
if (ret < 0) { if (ret < 0) {
DRM_DEV_ERROR(dev, "Failed to prepare_enable the vclk [%d]\n", DRM_DEV_ERROR(dev, "Failed to prepare_enable the vclk [%d]\n",
ret); ret);
return ret; goto err_vclk_enable;
} }
return 0; return 0;
err_vclk_enable:
clk_disable_unprepare(ctx->eclk);
err_eclk_enable:
clk_disable_unprepare(ctx->aclk);
err_aclk_enable:
clk_disable_unprepare(ctx->pclk);
err_pclk_enable:
return ret;
} }
#endif #endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册