To avoid memory leakage, we need to cleanup the initialized ipu planes in the bailout path of ipu_crtc_init(). Signed-off-by: Liu Ying <Ying.Liu@xxxxxxxxxxxxx> --- This patch applies to the imx-drm/fixes branch of Philipp Zabel's open git. drivers/gpu/drm/imx/ipuv3-crtc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c index 67813ca..59f44df 100644 --- a/drivers/gpu/drm/imx/ipuv3-crtc.c +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c @@ -371,7 +371,7 @@ static int ipu_crtc_init(struct ipu_crtc *ipu_crtc, ipu_crtc->dev->of_node); if (ret) { dev_err(ipu_crtc->dev, "adding crtc failed with %d.\n", ret); - goto err_put_resources; + goto err_cleanup_plane0; } ret = ipu_plane_get_resources(ipu_crtc->plane[0]); @@ -402,9 +402,14 @@ static int ipu_crtc_init(struct ipu_crtc *ipu_crtc, return 0; err_put_plane_res: + if (ipu_crtc->plane[1]) + ipu_plane_cleanup(ipu_crtc->plane[1]); + ipu_plane_put_resources(ipu_crtc->plane[0]); err_remove_crtc: imx_drm_remove_crtc(ipu_crtc->imx_crtc); +err_cleanup_plane0: + ipu_plane_cleanup(ipu_crtc->plane[0]); err_put_resources: ipu_put_resources(ipu_crtc); -- 2.5.0 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel