From bc257928d7a431400dd8f83ff03590b7f5a1dda6 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Tue, 25 Apr 2023 13:17:26 -0700 Subject: [PATCH] vulkan: Handle alignment failure in the pipeline cache. On malloc failure, or more likely a passed in pDataSize < pipeline cache data size, we should return incomplete. Otherwise, vk_pipeline_cache_object_serialize will assertion fail about the start not being aligned. Closes: #8868 Fixes: 591da9877900 ("vulkan: Add a common VkPipelineCache implementation") Reviewed-by: Faith Ekstrand Reviewed-by: Samuel Pitoiset Part-of: --- src/vulkan/runtime/vk_pipeline_cache.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vulkan/runtime/vk_pipeline_cache.c b/src/vulkan/runtime/vk_pipeline_cache.c index d87438d..95c1a46 100644 --- a/src/vulkan/runtime/vk_pipeline_cache.c +++ b/src/vulkan/runtime/vk_pipeline_cache.c @@ -710,7 +710,10 @@ vk_common_GetPipelineCacheData(VkDevice _device, intptr_t data_size_resv = blob_reserve_uint32(&blob); blob_write_bytes(&blob, object->key_data, object->key_size); - blob_align(&blob, VK_PIPELINE_CACHE_BLOB_ALIGN); + if (!blob_align(&blob, VK_PIPELINE_CACHE_BLOB_ALIGN)) { + result = VK_INCOMPLETE; + break; + } uint32_t data_size; if (!vk_pipeline_cache_object_serialize(cache, object, -- 2.7.4