summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2020-06-19 17:09:01 +1000
committerDave Airlie <airlied@redhat.com>2020-07-27 13:48:11 +1000
commitaf15fd1c6cc9033ff662cc230ddbe6c5ea6cf18d (patch)
tree16a3d2a30980e23f0f04c117c97ab1c89f82fb86
parentaad047d0f9e1a5bd0f2648c1182d5685fa2cc2d5 (diff)
llvmpipe: fix race in shader deletion
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_cs.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_cs.c b/src/gallium/drivers/llvmpipe/lp_state_cs.c
index 9759513d8c6..4a396a57f8f 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_cs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_cs.c
@@ -500,9 +500,6 @@ llvmpipe_remove_cs_shader_variant(struct llvmpipe_context *lp,
variant->shader->variants_cached,
lp->nr_cs_variants, variant->nr_instrs, lp->nr_cs_instrs);
}
-
- gallivm_destroy(variant->gallivm);
-
/* remove from shader's list */
remove_from_list(&variant->list_item_local);
variant->shader->variants_cached--;
@@ -512,6 +509,8 @@ llvmpipe_remove_cs_shader_variant(struct llvmpipe_context *lp,
lp->nr_cs_variants--;
lp->nr_cs_instrs -= variant->nr_instrs;
+ gallivm_destroy(variant->gallivm);
+
FREE(variant);
}