vulkan/overlay: fix crash on freeing NULL command buffer
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Mon, 8 Jul 2019 13:00:59 +0000 (16:00 +0300)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Mon, 8 Jul 2019 21:49:26 +0000 (21:49 +0000)
It is legal to call vkFreeCommandBuffers() on NULL command buffers.

This fix requires eb41ce1b012f24 ("util/hash_table: Properly handle
the NULL key in hash_table_u64").

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 4438188f492e1f ("vulkan/overlay: record stats in command buffers and accumulate on exec/submit")
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/vulkan/overlay-layer/overlay.cpp

index c4344f96aa47a7eed30ae5da3f04127b44a03b7f..a1fc30779f75aab056f3e29410e92fb68e98356d 100644 (file)
@@ -2026,6 +2026,10 @@ static void overlay_FreeCommandBuffers(
    for (uint32_t i = 0; i < commandBufferCount; i++) {
       struct command_buffer_data *cmd_buffer_data =
          FIND_CMD_BUFFER_DATA(pCommandBuffers[i]);
+      /* It is legal to free a NULL command buffer*/
+      if (!cmd_buffer_data)
+         continue;
+
       uint64_t count = (uintptr_t)find_object_data(HKEY(cmd_buffer_data->pipeline_query_pool));
       if (count == 1) {
          unmap_object(HKEY(cmd_buffer_data->pipeline_query_pool));