sna: Prevent NULL deref with early termination and DBG enabled

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2012-06-02 08:53:24 +01:00
parent 1be2afb81d
commit 58fc03b8c3
1 changed files with 6 additions and 2 deletions

View File

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