From 2dcbeb234ec290cf20ee6247dd7d86cb6e5df7b0 Mon Sep 17 00:00:00 2001 From: Karmjit Mahil Date: Fri, 5 May 2023 13:45:07 +0100 Subject: [PATCH] pvr: Fix vk_free() in vkCreateRenderPass2() error path There was a missing vk_free() and one at the wrong place. Fixes: dEQP-VK.api.object_management.alloc_callback_fail.render_pass Signed-off-by: Karmjit Mahil Reviewed-by: Frank Binns Part-of: --- src/imagination/vulkan/pvr_hw_pass.c | 4 ++-- src/imagination/vulkan/pvr_pass.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/imagination/vulkan/pvr_hw_pass.c b/src/imagination/vulkan/pvr_hw_pass.c index f3e9be87ca5..47c549429a1 100644 --- a/src/imagination/vulkan/pvr_hw_pass.c +++ b/src/imagination/vulkan/pvr_hw_pass.c @@ -2495,9 +2495,8 @@ VkResult pvr_create_renderpass_hwsetup( __typeof__(*subpass_map), pass->subpass_count); - if (!vk_multialloc_zalloc(&ma, alloc, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT)) { + if (!vk_multialloc_zalloc(&ma, alloc, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT)) return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); - } hw_setup->surface_allocate = surface_allocate; hw_setup->subpass_map = subpass_map; @@ -2516,6 +2515,7 @@ VkResult pvr_create_renderpass_hwsetup( if (!vk_multialloc_zalloc(&ma_ctx, alloc, VK_SYSTEM_ALLOCATION_SCOPE_COMMAND)) { + vk_free(alloc, hw_setup); return vk_error(device, VK_ERROR_OUT_OF_HOST_MEMORY); } diff --git a/src/imagination/vulkan/pvr_pass.c b/src/imagination/vulkan/pvr_pass.c index ddcbbabc2bc..fd731be7c4b 100644 --- a/src/imagination/vulkan/pvr_pass.c +++ b/src/imagination/vulkan/pvr_pass.c @@ -674,16 +674,16 @@ VkResult pvr_CreateRenderPass2(VkDevice _device, pass, hw_render, &load_op); + if (result != VK_SUCCESS) + goto err_load_op_destroy; + + result = + pvr_generate_load_op_shader(device, pAllocator, hw_render, load_op); if (result != VK_SUCCESS) { vk_free2(&device->vk.alloc, pAllocator, load_op); goto err_load_op_destroy; } - result = - pvr_generate_load_op_shader(device, pAllocator, hw_render, load_op); - if (result != VK_SUCCESS) - goto err_load_op_destroy; - hw_render->load_op = load_op; }