From fe5b1ad32d08e08692fb0b92460dc4764abf805d Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Tue, 11 May 2021 11:07:20 -0400 Subject: [PATCH] zink/ntv: Don't call free() on ralloc'd memory MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Caught this with an LTO build: [1465/1465] Linking target src/gallium/targets/dri/libgallium_dri.so In function ‘spirv_shader_delete’, inlined from ‘nir_to_spirv’ at ../src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c:3907:7: ../src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c:3916:4: warning: ‘free’ called on pointer ‘block_1394’ with nonzero offset 48 [-Wfree-nonheap-object] 3916 | FREE(s); | ^ ../src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c: In function ‘nir_to_spirv’: ../src/util/ralloc.c:133:18: note: returned from ‘malloc’ 133 | void *block = malloc(align64(size + sizeof(ralloc_header), | ^ Since s->words is allocated on the same ralloc context we can simplify further by freeing the context all at once. Reviewed-by: Emma Anholt Reviewed-by: Mike Blumenkrantz Part-of: (cherry picked from commit 584145ea882b710027ce620a5d505bd25ab284b1) --- .pick_status.json | 2 +- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 56fa3f1a83e..c73b59405b8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4585,7 +4585,7 @@ "description": "zink/ntv: Don't call free() on ralloc'd memory", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index c67ca8b081a..d24f39dee3f 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -3776,6 +3776,5 @@ fail: void spirv_shader_delete(struct spirv_shader *s) { - FREE(s->words); - FREE(s); + ralloc_free(s); }