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 | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/imagination/vulkan/pvr_hw_pass.c b/src/imagination/vulkan/pvr_hw_pass.c index f3e9be8..47c5494 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 ddcbbab..fd731be 100644 --- a/src/imagination/vulkan/pvr_pass.c +++ b/src/imagination/vulkan/pvr_pass.c @@ -674,15 +674,15 @@ VkResult pvr_CreateRenderPass2(VkDevice _device, pass, hw_render, &load_op); - if (result != VK_SUCCESS) { - vk_free2(&device->vk.alloc, pAllocator, 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) + if (result != VK_SUCCESS) { + vk_free2(&device->vk.alloc, pAllocator, load_op); goto err_load_op_destroy; + } hw_render->load_op = load_op; } -- 2.7.4