From 58fc03b8c36688e9fa7925aa82b83d36c9decb7e Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sat, 2 Jun 2012 08:53:24 +0100 Subject: [PATCH] sna: Prevent NULL deref with early termination and DBG enabled Signed-off-by: Chris Wilson --- src/sna/sna_driver.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c index f8e386b7..a1581f36 100644 --- a/src/sna/sna_driver.c +++ b/src/sna/sna_driver.c @@ -213,6 +213,7 @@ static Bool sna_create_screen_resources(ScreenPtr screen) return TRUE; cleanup_front: + screen->SetScreenPixmap(NULL); screen->DestroyPixmap(sna->front); sna->front = NULL; return FALSE; @@ -326,7 +327,8 @@ static int sna_open_drm_master(ScrnInfoPtr scrn) err = drmSetInterfaceVersion(fd, &sv); if (err != 0) { xf86DrvMsg(scrn->scrnIndex, X_ERROR, - "[drm] failed to set drm interface version.\n"); + "[drm] failed to set drm interface version: %s [%d].\n", + strerror(-err), -err); drmClose(fd); return -1; } @@ -362,8 +364,10 @@ static void sna_close_drm_master(ScrnInfoPtr scrn) { struct sna_device *dev = sna_device(scrn); - DBG(("%s(open_count=%d)\n", __FUNCTION__, dev->open_count)); + if (dev == NULL) + return; + DBG(("%s(open_count=%d)\n", __FUNCTION__, dev->open_count)); if (--dev->open_count) return;