imx-drm: imx-drm-core: make imx_drm_crtc_register() safer
imx_drm_crtc_register() doesn't clean up the CRTC upon failure, which leaves the CRTC attached to the DRM device. Also, it does setup after attaching the CRTC to the DRM device. Fix this by reordering the function such that we do the setup before drm_crtc_init(): this fixes both issues. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
942325c8b2
commit
9fe73d46ed
|
@ -377,8 +377,6 @@ static int imx_drm_crtc_register(struct imx_drm_crtc *imx_drm_crtc)
|
||||||
struct imx_drm_device *imxdrm = __imx_drm_device();
|
struct imx_drm_device *imxdrm = __imx_drm_device();
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
drm_crtc_init(imxdrm->drm, imx_drm_crtc->crtc,
|
|
||||||
imx_drm_crtc->imx_drm_helper_funcs.crtc_funcs);
|
|
||||||
ret = drm_mode_crtc_set_gamma_size(imx_drm_crtc->crtc, 256);
|
ret = drm_mode_crtc_set_gamma_size(imx_drm_crtc->crtc, 256);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -386,6 +384,9 @@ static int imx_drm_crtc_register(struct imx_drm_crtc *imx_drm_crtc)
|
||||||
drm_crtc_helper_add(imx_drm_crtc->crtc,
|
drm_crtc_helper_add(imx_drm_crtc->crtc,
|
||||||
imx_drm_crtc->imx_drm_helper_funcs.crtc_helper_funcs);
|
imx_drm_crtc->imx_drm_helper_funcs.crtc_helper_funcs);
|
||||||
|
|
||||||
|
drm_crtc_init(imxdrm->drm, imx_drm_crtc->crtc,
|
||||||
|
imx_drm_crtc->imx_drm_helper_funcs.crtc_funcs);
|
||||||
|
|
||||||
drm_mode_group_reinit(imxdrm->drm);
|
drm_mode_group_reinit(imxdrm->drm);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue