Skip to content

Commit 5af5f50

Browse files
Patrick LerdaMarge Bot
authored andcommitted
i915: fix nir_to_tgsi() related memory leak
For instance, this issue is triggered with "piglit/bin/glx-multithread-texture -auto -fbo": Direct leak of 256 byte(s) in 1 object(s) allocated from: #0 0xb71eda62 in __interceptor_realloc (/usr/lib/libasan.so.6+0xb2a62) #1 0xadd5a32f in tokens_expand ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:239 #2 0xadd5a32f in get_tokens ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:262 #3 0xadd62519 in copy_instructions ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:2079 #4 0xadd62519 in ureg_finalize ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:2129 #5 0xadd64bde in ureg_get_tokens ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:2206 #6 0xade377d0 in nir_to_tgsi_options ../src/gallium/auxiliary/nir/nir_to_tgsi.c:4043 #7 0xade3da63 in nir_to_tgsi ../src/gallium/auxiliary/nir/nir_to_tgsi.c:3831 #8 0xaeb606c9 in i915_create_vs_state ../src/gallium/drivers/i915/i915_state.c:662 #9 0xac781a2c in st_create_common_variant ../src/mesa/state_tracker/st_program.c:720 #10 0xac78e8a4 in st_get_common_variant ../src/mesa/state_tracker/st_program.c:773 #11 0xac78fc10 in st_precompile_shader_variant ../src/mesa/state_tracker/st_program.c:1259 #12 0xac78fc10 in st_finalize_program ../src/mesa/state_tracker/st_program.c:1345 #13 0xac790b1a in st_program_string_notify ../src/mesa/state_tracker/st_program.c:1378 #14 0xace457a9 in _mesa_get_fixed_func_vertex_program ../src/mesa/main/ffvertex_prog.c:1397 #15 0xac5ef8db in update_program ../src/mesa/main/state.c:281 #16 0xac5f0ece in _mesa_update_state_locked ../src/mesa/main/state.c:560 #17 0xac5f1653 in _mesa_update_state ../src/mesa/main/state.c:593 #18 0xacdf9fe2 in _mesa_DrawArrays ../src/mesa/main/draw.c:1403 Fixes: 487a493 ("i915g: Add support for per-vertex point size.") Signed-off-by: Patrick Lerda <[email protected]> Reviewed-by: Emma Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27570>
1 parent 92802ea commit 5af5f50

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

src/gallium/drivers/i915/i915_state.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,7 @@ i915_create_vs_state(struct pipe_context *pipe,
658658
const struct pipe_shader_state *templ)
659659
{
660660
struct i915_context *i915 = i915_context(pipe);
661+
void *vertex_shader;
661662

662663
struct pipe_shader_state from_nir = {PIPE_SHADER_IR_TGSI};
663664
if (templ->type == PIPE_SHADER_IR_NIR) {
@@ -674,7 +675,11 @@ i915_create_vs_state(struct pipe_context *pipe,
674675
templ = &from_nir;
675676
}
676677

677-
return draw_create_vertex_shader(i915->draw, templ);
678+
vertex_shader = draw_create_vertex_shader(i915->draw, templ);
679+
680+
FREE((void *)from_nir.tokens);
681+
682+
return vertex_shader;
678683
}
679684

680685
static void

0 commit comments

Comments
 (0)