more checks for NULL encoder so we don't segfault.
authorAlan Hourihane <alanh@tungstengraphics.com>
Mon, 2 Jun 2008 09:44:29 +0000 (10:44 +0100)
committerAlan Hourihane <alanh@tungstengraphics.com>
Mon, 2 Jun 2008 09:44:29 +0000 (10:44 +0100)
linux-core/drm_crtc_helper.c
linux-core/intel_display.c
linux-core/intel_fb.c

index a8c44b7..fcb1243 100644 (file)
@@ -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;
index ba9441d..8a8f4ed 100644 (file)
@@ -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;
index 268e95c..d490880 100644 (file)
@@ -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;
                }