Mesa (master): llvmpipe: use pipe_sampler_view_release() to avoid segfault

Brian Paul brianp at kemper.freedesktop.org
Sun Dec 22 14:09:22 UTC 2013


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

Author: Jonathan Liu <net147 at gmail.com>
Date:   Sun Dec 15 18:24:00 2013 -0700

llvmpipe: use pipe_sampler_view_release() to avoid segfault

This fixes another case of faulting when freeing a pipe_sampler_view
that belongs to a previously destroyed context.

Cc: "10.0" <mesa-stable at lists.freedesktop.org>
Signed-off-by: Jonathan Liu <net147 at gmail.com>
Reviewed-by: Brian Paul <brianp at vmware.com>

---

 src/gallium/drivers/llvmpipe/lp_state_sampler.c |    6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/gallium/drivers/llvmpipe/lp_state_sampler.c b/src/gallium/drivers/llvmpipe/lp_state_sampler.c
index 1d3db0f..ff498f7 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_sampler.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_sampler.c
@@ -136,6 +136,12 @@ llvmpipe_set_sampler_views(struct pipe_context *pipe,
 
    /* set the new sampler views */
    for (i = 0; i < num; i++) {
+      /* Note: we're using pipe_sampler_view_release() here to work around
+       * a possible crash when the old view belongs to another context that
+       * was already destroyed.
+       */
+      pipe_sampler_view_release(pipe,
+                                &llvmpipe->sampler_views[shader][start + i]);
       pipe_sampler_view_reference(&llvmpipe->sampler_views[shader][start + i],
                                   views[i]);
    }




More information about the mesa-commit mailing list