drm: rcar-du: Fix NULL encoder pointer dereference
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / gpu / drm / rcar-du / rcar_du_hdmicon.c
index 8abaaf2..4d7d4dd 100644 (file)
@@ -25,7 +25,8 @@
 
 static int rcar_du_hdmi_connector_get_modes(struct drm_connector *connector)
 {
-       struct drm_encoder *encoder = connector->encoder;
+       struct rcar_du_connector *con = to_rcar_connector(connector);
+       struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder);
        struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder);
 
        if (sfuncs->get_modes == NULL)
@@ -37,7 +38,8 @@ static int rcar_du_hdmi_connector_get_modes(struct drm_connector *connector)
 static int rcar_du_hdmi_connector_mode_valid(struct drm_connector *connector,
                                             struct drm_display_mode *mode)
 {
-       struct drm_encoder *encoder = connector->encoder;
+       struct rcar_du_connector *con = to_rcar_connector(connector);
+       struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder);
        struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder);
 
        if (sfuncs->mode_valid == NULL)
@@ -61,7 +63,8 @@ static void rcar_du_hdmi_connector_destroy(struct drm_connector *connector)
 static enum drm_connector_status
 rcar_du_hdmi_connector_detect(struct drm_connector *connector, bool force)
 {
-       struct drm_encoder *encoder = connector->encoder;
+       struct rcar_du_connector *con = to_rcar_connector(connector);
+       struct drm_encoder *encoder = rcar_encoder_to_drm_encoder(con->encoder);
        struct drm_encoder_slave_funcs *sfuncs = to_slave_funcs(encoder);
 
        if (sfuncs->detect == NULL)