Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6296d09d authored by Jian Zhang's avatar Jian Zhang Committed by Greg Kroah-Hartman
Browse files

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



[ Upstream commit 48b927770f8ad3f8cf4a024a552abf272af9f592 ]

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: default avatarHulk Robot <hulkci@huawei.com>
Signed-off-by: default avatarJian Zhang <zhangjian210@huawei.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 1ae9edf7
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -800,31 +800,40 @@ static int exynos7_decon_resume(struct device *dev)
	if (ret < 0) {
		DRM_DEV_ERROR(dev, "Failed to prepare_enable the pclk [%d]\n",
			      ret);
		return ret;
		goto err_pclk_enable;
	}

	ret = clk_prepare_enable(ctx->aclk);
	if (ret < 0) {
		DRM_DEV_ERROR(dev, "Failed to prepare_enable the aclk [%d]\n",
			      ret);
		return ret;
		goto err_aclk_enable;
	}

	ret = clk_prepare_enable(ctx->eclk);
	if  (ret < 0) {
		DRM_DEV_ERROR(dev, "Failed to prepare_enable the eclk [%d]\n",
			      ret);
		return ret;
		goto err_eclk_enable;
	}

	ret = clk_prepare_enable(ctx->vclk);
	if  (ret < 0) {
		DRM_DEV_ERROR(dev, "Failed to prepare_enable the vclk [%d]\n",
			      ret);
		return ret;
		goto err_vclk_enable;
	}

	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