Mesa (master): r300g: fix invalid dereference in winsys

Marek Olšák mareko at kemper.freedesktop.org
Fri Feb 18 23:09:37 UTC 2011


Module: Mesa
Branch: master
Commit: e9e5380f22c230ea1276208baa40c3fe6482b296
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9e5380f22c230ea1276208baa40c3fe6482b296

Author: Marek Olšák <maraeo at gmail.com>
Date:   Sat Feb 19 00:06:52 2011 +0100

r300g: fix invalid dereference in winsys

radeon_bo_unref may destroy the buffer, so call it after p_atomic_dec, not before.

---

 src/gallium/winsys/radeon/drm/radeon_drm_cs.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
index 8f6f4a1..a38b010 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c
@@ -110,8 +110,8 @@ static void radeon_cs_context_cleanup(struct radeon_cs_context *csc)
     unsigned i;
 
     for (i = 0; i < csc->crelocs; i++) {
-        radeon_bo_unref(csc->relocs_bo[i]);
         p_atomic_dec(&csc->relocs_bo[i]->num_cs_references);
+        radeon_bo_unref(csc->relocs_bo[i]);
         csc->relocs_bo[i] = NULL;
     }
 




More information about the mesa-commit mailing list