From aba16defa842ef3559fb29c6f9c4d347895b9b3a Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Wed, 8 Mar 2023 17:20:22 +0100 Subject: [PATCH] radeonsi: fix memory leak related to ureg_get_tokens() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Indeed, ureg_get_tokens() returns an allocated string that should be freed using ureg_free_tokens(). For instance, with "piglit/bin/arb_shader_image_load_store-invalid -auto -fbo" Direct leak of 768 byte(s) in 2 object(s) allocated from: #0 0x7fa819a78b48 in __interceptor_realloc (/usr/lib64/libasan.so.6+0xb1b48) #1 0x7fa80e189e04 in tokens_expand ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:239 #2 0x7fa80e189e04 in get_tokens ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:262 #3 0x7fa80e191f6e in copy_instructions ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:2079 #4 0x7fa80e191f6e in ureg_finalize ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:2129 #5 0x7fa80e19447b in ureg_get_tokens ../src/gallium/auxiliary/tgsi/tgsi_ureg.c:2206 #6 0x7fa80ec68b91 in si_create_fmask_expand_cs ../src/gallium/drivers/radeonsi/si_shaderlib_tgsi.c:564 Signed-off-by: Patrick Lerda Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_shaderlib_tgsi.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/gallium/drivers/radeonsi/si_shaderlib_tgsi.c b/src/gallium/drivers/radeonsi/si_shaderlib_tgsi.c index 821def5c344..c46943c80d6 100644 --- a/src/gallium/drivers/radeonsi/si_shaderlib_tgsi.c +++ b/src/gallium/drivers/radeonsi/si_shaderlib_tgsi.c @@ -565,6 +565,8 @@ void *si_create_fmask_expand_cs(struct pipe_context *ctx, unsigned num_samples, void *cs = ctx->create_compute_state(ctx, &state); ureg_destroy(ureg); + ureg_free_tokens(state.prog); + return cs; }