提交 48b92777 编写于 作者: J Jian Zhang 提交者: Inki Dae

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

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>
上级 f4284724
...@@ -801,31 +801,40 @@ static int exynos7_decon_resume(struct device *dev) ...@@ -801,31 +801,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.
先完成此消息的编辑!
想要评论请 注册