From dc66e663a06f2ce7685eba1fdf9fad01786bcb4f Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 17 Mar 2014 13:46:05 +0000 Subject: [PATCH] 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 --- src/sna/sna_display.c | 9 +++++++++ src/sna/sna_driver.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index de08cb9e..6e2d118f 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 ef301497..5e1f4400 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))