diff --git a/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c b/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c index 5f460b38596c..815c770147ed 100644 --- a/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c +++ b/drivers/gpu/drm/renesas/shmobile/shmob_drm_crtc.c @@ -583,6 +583,13 @@ shmob_drm_connector_init(struct shmob_drm_device *sdev, drm_connector_helper_add(connector, &connector_helper_funcs); + ret = drm_connector_attach_encoder(connector, encoder); + if (ret < 0) { + drm_connector_cleanup(connector); + kfree(scon); + return ERR_PTR(ret); + } + return connector; } @@ -594,7 +601,6 @@ int shmob_drm_connector_create(struct shmob_drm_device *sdev, struct drm_encoder *encoder) { struct drm_connector *connector; - int ret; if (sdev->pdata) connector = shmob_drm_connector_init(sdev, encoder); @@ -606,17 +612,9 @@ int shmob_drm_connector_create(struct shmob_drm_device *sdev, return PTR_ERR(connector); } - ret = drm_connector_attach_encoder(connector, encoder); - if (ret < 0) - goto error; - connector->dpms = DRM_MODE_DPMS_OFF; sdev->connector = connector; return 0; - -error: - drm_connector_cleanup(connector); - return ret; }