anv: fix memory leak on device destroy
[mesa.git] / src / intel / vulkan / anv_device.c
index 37dabd76278da1e01198e3c4075de6aa3ca0d669..6d94cfc66baeebed774db99db77ef05bf532b876 100644 (file)
@@ -2515,7 +2515,7 @@ VkResult anv_CreateDevice(
                                           vk_priority_to_gen(priority));
       if (err != 0 && priority > VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT) {
          result = vk_error(VK_ERROR_NOT_PERMITTED_EXT);
-         goto fail_fd;
+         goto fail_vmas;
       }
    }
 
@@ -2684,6 +2684,11 @@ VkResult anv_CreateDevice(
    pthread_mutex_destroy(&device->mutex);
  fail_context_id:
    anv_gem_destroy_context(device, device->context_id);
+ fail_vmas:
+   if (physical_device->use_softpin) {
+      util_vma_heap_finish(&device->vma_hi);
+      util_vma_heap_finish(&device->vma_lo);
+   }
  fail_fd:
    close(device->fd);
  fail_device:
@@ -2739,6 +2744,11 @@ void anv_DestroyDevice(
 
    anv_bo_pool_finish(&device->batch_bo_pool);
 
+   if (physical_device->use_softpin) {
+      util_vma_heap_finish(&device->vma_hi);
+      util_vma_heap_finish(&device->vma_lo);
+   }
+
    pthread_cond_destroy(&device->queue_submit);
    pthread_mutex_destroy(&device->mutex);