Mesa (lp-binning): llvmpipe: fix double free

Keith Whitwell keithw at kemper.freedesktop.org
Wed Jan 6 17:15:06 UTC 2010


Module: Mesa
Branch: lp-binning
Commit: b08583da468ee186b43ea678f8d33fb7df3ab372
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b08583da468ee186b43ea678f8d33fb7df3ab372

Author: Keith Whitwell <keithw at vmware.com>
Date:   Wed Jan  6 17:13:37 2010 +0000

llvmpipe: fix double free

---

 src/gallium/drivers/llvmpipe/lp_context.c       |    5 ++---
 src/gallium/drivers/llvmpipe/lp_setup.c         |    3 ++-
 src/gallium/drivers/llvmpipe/lp_setup.h         |    2 --
 src/gallium/drivers/llvmpipe/lp_setup_context.h |    2 ++
 4 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_context.c b/src/gallium/drivers/llvmpipe/lp_context.c
index 0457ccc..696a9d5 100644
--- a/src/gallium/drivers/llvmpipe/lp_context.c
+++ b/src/gallium/drivers/llvmpipe/lp_context.c
@@ -53,12 +53,11 @@ static void llvmpipe_destroy( struct pipe_context *pipe )
    struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
    uint i;
 
+   /* This will also destroy llvmpipe->setup:
+    */
    if (llvmpipe->draw)
       draw_destroy( llvmpipe->draw );
 
-   if (llvmpipe->setup)
-      lp_setup_destroy( llvmpipe->setup );
-
    for (i = 0; i < PIPE_MAX_COLOR_BUFS; i++) {
       pipe_surface_reference(&llvmpipe->framebuffer.cbufs[i], NULL);
    }
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index e2b21ae..1eb944a 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -571,7 +571,8 @@ lp_setup_update_state( struct setup_context *setup )
 
 
 
-
+/* Only caller is lp_setup_vbuf_destroy()
+ */
 void 
 lp_setup_destroy( struct setup_context *setup )
 {
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.h b/src/gallium/drivers/llvmpipe/lp_setup.h
index a6120fc..bf12cb8 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.h
+++ b/src/gallium/drivers/llvmpipe/lp_setup.h
@@ -128,7 +128,5 @@ void
 lp_setup_set_vertex_info( struct setup_context *setup, 
                           struct vertex_info *info );
 
-void 
-lp_setup_destroy( struct setup_context *setup );
 
 #endif
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h
index d2278a4..a1808fc 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_context.h
+++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h
@@ -141,4 +141,6 @@ void lp_setup_init_vbuf(struct setup_context *setup);
 
 void lp_setup_update_state( struct setup_context *setup );
 
+void lp_setup_destroy( struct setup_context *setup );
+
 #endif




More information about the mesa-commit mailing list