All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH xf86-video-ati 1/2] Bail from dri2_create_buffer2 if we can't get a pixmap
@ 2018-05-18 14:21 Michel Dänzer
       [not found] ` <20180518142140.20582-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
  0 siblings, 1 reply; 3+ messages in thread
From: Michel Dänzer @ 2018-05-18 14:21 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

From: Michel Dänzer <michel.daenzer@amd.com>

We would store the NULL pointer and continue, which would lead to a
crash down the road.

Bugzilla: https://bugs.freedesktop.org/106293
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
 src/radeon_dri2.c | 40 +++++++++++++++++++---------------------
 1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/src/radeon_dri2.c b/src/radeon_dri2.c
index 9f373589d..3b75f66f3 100644
--- a/src/radeon_dri2.c
+++ b/src/radeon_dri2.c
@@ -233,37 +233,36 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen,
 					  flags | RADEON_CREATE_PIXMAP_DRI2);
     }
 
+    if (!pixmap)
+	return NULL;
+
     buffers = calloc(1, sizeof *buffers);
     if (buffers == NULL)
         goto error;
 
-    if (pixmap) {
-	if (!info->use_glamor) {
-	    info->exa_force_create = TRUE;
-	    exaMoveInPixmap(pixmap);
-	    info->exa_force_create = FALSE;
-	    if (exaGetPixmapDriverPrivate(pixmap) == NULL) {
-		/* this happen if pixmap is non accelerable */
-		goto error;
-	    }
-	} else if (is_glamor_pixmap) {
-	    pixmap = radeon_glamor_set_pixmap_bo(drawable, pixmap);
-	    pixmap->refcnt++;
-	}
-
-	if (!radeon_get_flink_name(pRADEONEnt, pixmap, &buffers->name))
+    if (!info->use_glamor) {
+	info->exa_force_create = TRUE;
+	exaMoveInPixmap(pixmap);
+	info->exa_force_create = FALSE;
+	if (exaGetPixmapDriverPrivate(pixmap) == NULL) {
+	    /* this happen if pixmap is non accelerable */
 	    goto error;
+	}
+    } else if (is_glamor_pixmap) {
+	pixmap = radeon_glamor_set_pixmap_bo(drawable, pixmap);
+	pixmap->refcnt++;
     }
 
+    if (!radeon_get_flink_name(pRADEONEnt, pixmap, &buffers->name))
+	goto error;
+
     privates = calloc(1, sizeof(struct dri2_buffer_priv));
     if (privates == NULL)
         goto error;
 
     buffers->attachment = attachment;
-    if (pixmap) {
-	buffers->pitch = pixmap->devKind;
-	buffers->cpp = cpp;
-    }
+    buffers->pitch = pixmap->devKind;
+    buffers->cpp = cpp;
     buffers->driverPrivate = privates;
     buffers->format = format;
     buffers->flags = 0; /* not tiled */
@@ -275,8 +274,7 @@ radeon_dri2_create_buffer2(ScreenPtr pScreen,
 
 error:
     free(buffers);
-    if (pixmap)
-        (*pScreen->DestroyPixmap)(pixmap);
+    (*pScreen->DestroyPixmap)(pixmap);
     return NULL;
 }
 
-- 
2.17.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-05-21 19:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-18 14:21 [PATCH xf86-video-ati 1/2] Bail from dri2_create_buffer2 if we can't get a pixmap Michel Dänzer
     [not found] ` <20180518142140.20582-1-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
2018-05-18 14:21   ` [PATCH xf86-video-ati 2/2] glamor: Bail CreatePixmap on unsupported pixmap depth Michel Dänzer
     [not found]     ` <20180518142140.20582-2-michel-otUistvHUpPR7s880joybQ@public.gmane.org>
2018-05-21 19:02       ` Alex Deucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.