xf86-video-intel: src/sna/sna_display.c src/sna/sna_driver.c

Chris Wilson ickle at kemper.freedesktop.org
Mon Mar 17 06:50:33 PDT 2014


 src/sna/sna_display.c |    9 +++++++++
 src/sna/sna_driver.c  |    2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

New commits:
commit dc66e663a06f2ce7685eba1fdf9fad01786bcb4f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Mar 17 13:46:05 2014 +0000

    sna: Improve guard against loading palettes whilst headless
    
    Whilst hosted, which is very similar to being headless, we do not even
    have the kmode pointer and so checking kmode->count_crtcs is fatal.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index de08cb9..6e2d118 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3513,7 +3513,16 @@ bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna)
 		num_fake = 1;
 
 	mode->kmode = drmModeGetResources(sna->kgem.fd);
+	if (mode->kmode &&
+	    (mode->kmode->count_crtcs == 0 ||
+	     mode->kmode->count_connectors == 0)) {
+		drmModeFreeResources(mode->kmode);
+		mode->kmode = NULL;
+	}
 	if (mode->kmode) {
+		assert(mode->kmode->count_crtcs);
+		assert(mode->kmode->count_connectors);
+
 		xf86CrtcConfigInit(scrn, &sna_mode_funcs);
 		XF86_CRTC_CONFIG_PTR(scrn)->xf86_crtc_notify = sna_crtc_config_notify;
 
diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index ef30149..5e1f440 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -1038,7 +1038,7 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL)
 	if (!miCreateDefColormap(screen))
 		return FALSE;
 
-	if (sna->mode.kmode->count_crtcs &&
+	if (sna->mode.kmode &&
 	    !xf86HandleColormaps(screen, 256, 8, sna_load_palette, NULL,
 				 CMAP_RELOAD_ON_MODE_SWITCH |
 				 CMAP_PALETTED_TRUECOLOR))


More information about the xorg-commit mailing list