Mesa (staging/19.2): anv: fix memory leak on device destroy

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Oct 21 16:18:07 UTC 2019


Module: Mesa
Branch: staging/19.2
Commit: cb0215a6fbe342bd0f479e712bf4b53c1c578c1d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb0215a6fbe342bd0f479e712bf4b53c1c578c1d

Author: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Date:   Fri Oct 18 15:28:30 2019 +0300

anv: fix memory leak on device destroy

v2: handle vma destruction if vkCreateDevice fails (Jordan)

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
Gitlab: https://gitlab.freedesktop.org/mesa/mesa/issues/1959
Cc: <mesa-stable at lists.freedesktop.org>
Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>
(cherry picked from commit b30e01aef5692be890f3f6ab944129b84d998254)

---

 src/intel/vulkan/anv_device.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index c88f5c4b7ff..510f0090ece 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -2421,7 +2421,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;
       }
    }
 
@@ -2587,6 +2587,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:
@@ -2642,6 +2647,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);
 




More information about the mesa-commit mailing list