diff options
-rw-r--r-- | linux-core/drm_crtc_helper.c | 9 | ||||
-rw-r--r-- | linux-core/intel_display.c | 3 | ||||
-rw-r--r-- | linux-core/intel_fb.c | 3 |
3 files changed, 12 insertions, 3 deletions
diff --git a/linux-core/drm_crtc_helper.c b/linux-core/drm_crtc_helper.c index a8c44b76..fcb1243c 100644 --- a/linux-core/drm_crtc_helper.c +++ b/linux-core/drm_crtc_helper.c @@ -662,7 +662,14 @@ bool drm_helper_initial_config(struct drm_device *dev, bool can_grow) */ list_for_each_entry(connector, &dev->mode_config.connector_list, head) { - struct drm_crtc *crtc = connector->encoder->crtc; + struct drm_encoder *encoder = connector->encoder; + struct drm_crtc *crtc; + + if (!encoder) + continue; + + crtc = connector->encoder->crtc; + /* can't setup the connector if there's no assigned mode */ if (!crtc || !crtc->desired_mode) continue; diff --git a/linux-core/intel_display.c b/linux-core/intel_display.c index ba9441d6..8a8f4edb 100644 --- a/linux-core/intel_display.c +++ b/linux-core/intel_display.c @@ -228,7 +228,8 @@ bool intel_pipe_has_type (struct drm_crtc *crtc, int type) struct drm_connector *l_entry; list_for_each_entry(l_entry, &mode_config->connector_list, head) { - if (l_entry->encoder->crtc == crtc) { + if (l_entry->encoder && + l_entry->encoder->crtc == crtc) { struct intel_output *intel_output = to_intel_output(l_entry); if (intel_output->type == type) return true; diff --git a/linux-core/intel_fb.c b/linux-core/intel_fb.c index 268e95c5..d490880a 100644 --- a/linux-core/intel_fb.c +++ b/linux-core/intel_fb.c @@ -277,7 +277,8 @@ static int intelfb_set_par(struct fb_info *info) found = 0; list_for_each_entry(connector, &dev->mode_config.connector_list, head) { - if (connector->encoder->crtc == par->set.crtc){ + if (connector->encoder && + connector->encoder->crtc == par->set.crtc){ found = 1; break; } |