anv: fix unwind of vkCreateDevice fail
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Tue, 22 Oct 2019 12:34:12 +0000 (15:34 +0300)
committerLionel Landwerlin <lionel.g.landwerlin@intel.com>
Tue, 22 Oct 2019 20:44:26 +0000 (20:44 +0000)
We're skipping the context destruction in some cases which is the
grand scheme of thing is not that important because closing device->fd
will destroy the associated context as well.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reported-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Cc: <mesa-stable@lists.freedesktop.org>
Fixes: b30e01aef56 ("anv: fix memory leak on device destroy")
src/intel/vulkan/anv_device.c

index 6d94cfc66baeebed774db99db77ef05bf532b876..8934957e39bd79433f924bc8a127f17b6293886c 100644 (file)
@@ -2486,7 +2486,7 @@ VkResult anv_CreateDevice(
    if (physical_device->use_softpin) {
       if (pthread_mutex_init(&device->vma_mutex, NULL) != 0) {
          result = vk_error(VK_ERROR_INITIALIZATION_FAILED);
-         goto fail_fd;
+         goto fail_context_id;
       }
 
       /* keep the page with address zero out of the allocator */
@@ -2682,13 +2682,13 @@ VkResult anv_CreateDevice(
    pthread_cond_destroy(&device->queue_submit);
  fail_mutex:
    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_context_id:
+   anv_gem_destroy_context(device, device->context_id);
  fail_fd:
    close(device->fd);
  fail_device: