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;  		} | 
