From 92802ea90a7e1ec7b70d6ba2f4c6d95f67d88eaf Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Tue, 6 Feb 2024 01:16:41 +0100 Subject: [PATCH] i915: fix slab_create() related memory leaks For instance, this issue is triggered with "piglit/bin/fcc-blit-between-clears -auto -fbo": Direct leak of 836 byte(s) in 1 object(s) allocated from: #0 0xb71eb6f2 in malloc (/usr/lib/libasan.so.6+0xb26f2) #1 0xaefadc78 in slab_add_new_page ../src/util/slab.c:179 #2 0xaefadc78 in slab_alloc ../src/util/slab.c:221 #3 0xaef7d461 in i915_texture_transfer_map ../src/gallium/drivers/i915/i915_resource_texture.c:789 #4 0xac9e931e in pipe_texture_map ../src/gallium/auxiliary/util/u_inlines.h:555 #5 0xac9e931e in _mesa_map_renderbuffer ../src/mesa/main/renderbuffer.c:494 #6 0xad49c5e4 in readpixels_memcpy ../src/mesa/main/readpix.c:260 #7 0xad49c5e4 in _mesa_readpixels ../src/mesa/main/readpix.c:898 #8 0xad5d8cfe in st_ReadPixels ../src/mesa/state_tracker/st_cb_readpixels.c:568 #9 0xad4a0caf in read_pixels ../src/mesa/main/readpix.c:1199 #10 0xad4a0caf in _mesa_ReadnPixelsARB ../src/mesa/main/readpix.c:1216 #11 0xad4a155b in _mesa_ReadPixels ../src/mesa/main/readpix.c:1231 or "piglit/bin/fcc-read-to-pbo-after-clear -auto": Direct leak of 772 byte(s) in 1 object(s) allocated from: #0 0xb726b6f2 in malloc (/usr/lib/libasan.so.6+0xb26f2) #1 0xaf0adc88 in slab_add_new_page ../src/util/slab.c:179 #2 0xaf0adc88 in slab_alloc ../src/util/slab.c:221 #3 0xaf07aad7 in i915_buffer_transfer_map ../src/gallium/drivers/i915/i915_resource_buffer.c:75 #4 0xad10de74 in pipe_buffer_map_range ../src/gallium/auxiliary/util/u_inlines.h:398 #5 0xad10de74 in _mesa_bufferobj_map_range ../src/mesa/main/bufferobj.c:499 #6 0xad5677ce in _mesa_map_pbo_dest ../src/mesa/main/pbo.c:308 #7 0xad59be3b in _mesa_readpixels ../src/mesa/main/readpix.c:894 #8 0xad6d8cfe in st_ReadPixels ../src/mesa/state_tracker/st_cb_readpixels.c:568 #9 0xad5a0caf in read_pixels ../src/mesa/main/readpix.c:1199 #10 0xad5a0caf in _mesa_ReadnPixelsARB ../src/mesa/main/readpix.c:1216 #11 0xad5a155b in _mesa_ReadPixels ../src/mesa/main/readpix.c:1231 Fixes: e7a73b75a0db ("gallium: switch drivers to the slab allocator in src/util") Signed-off-by: Patrick Lerda Reviewed-by: Emma Anholt Part-of: --- src/gallium/drivers/i915/i915_context.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/gallium/drivers/i915/i915_context.c b/src/gallium/drivers/i915/i915_context.c index 826c5c6b538..c45bd70216d 100644 --- a/src/gallium/drivers/i915/i915_context.c +++ b/src/gallium/drivers/i915/i915_context.c @@ -159,6 +159,9 @@ i915_destroy(struct pipe_context *pipe) pipe_resource_reference(&i915->constants[i], NULL); } + slab_destroy(&i915->texture_transfer_pool); + slab_destroy(&i915->transfer_pool); + FREE(i915); }