Module: Mesa Branch: main Commit: 6e3266709a9a4b85a414c0400603e66859a2aaa3 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=6e3266709a9a4b85a414c0400603e66859a2aaa3
Author: Bas Nieuwenhuizen <[email protected]> Date: Sun Nov 14 23:59:41 2021 +0100 radv: Add more checking of cache sizes. Hopefully prevents things. Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13789> --- src/amd/vulkan/radv_pipeline_cache.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/amd/vulkan/radv_pipeline_cache.c b/src/amd/vulkan/radv_pipeline_cache.c index 0e8e515f1b1..87fe7f5c7d8 100644 --- a/src/amd/vulkan/radv_pipeline_cache.c +++ b/src/amd/vulkan/radv_pipeline_cache.c @@ -369,8 +369,12 @@ radv_create_shaders_from_pipeline_cache( *stack_sizes = malloc(entry->num_stack_sizes * sizeof(**stack_sizes)); memcpy(*stack_sizes, p, entry->num_stack_sizes * sizeof(**stack_sizes)); } + } else { + assert(!entry->num_stack_sizes); } + p += entry->num_stack_sizes * sizeof(**stack_sizes); + if (device->instance->debug_flags & RADV_DEBUG_NO_MEMORY_CACHE && cache == device->mem_cache) vk_free(&cache->alloc, entry); else { @@ -379,6 +383,7 @@ radv_create_shaders_from_pipeline_cache( p_atomic_inc(&entry->shaders[i]->ref_count); } + assert((uintptr_t)p <= (uintptr_t)entry + entry_size(entry)); radv_pipeline_cache_unlock(cache); return true; }
