From 048f0690ee4b39f865d4d6ad82a6c0290dcaaf41 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Thu, 29 Aug 2019 14:54:12 +0300 Subject: [PATCH] anv: invalidate file descriptor of semaphore sync fd at vkQueueSubmit We always close the in_fence at the end the anv_cmd_buffer_execbuf() so when we take it from the semaphore, let's not forget to invalidate it. Note that the code leaks the fence_in if we get any error before reaching the close(). Let's fix that in another patch or better, rewrite the whole thing! v2: drop redundant fd = -1 (Jason) v3: Update commit message (Jason) Signed-off-by: Lionel Landwerlin Cc: Reviewed-by: Jason Ekstrand --- src/intel/vulkan/anv_batch_chain.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/intel/vulkan/anv_batch_chain.c b/src/intel/vulkan/anv_batch_chain.c index 633a726583d..b1deae8e51c 100644 --- a/src/intel/vulkan/anv_batch_chain.c +++ b/src/intel/vulkan/anv_batch_chain.c @@ -1660,6 +1660,9 @@ anv_cmd_buffer_execbuf(struct anv_device *device, assert(!pdevice->has_syncobj); if (in_fence == -1) { in_fence = impl->fd; + if (in_fence == -1) + return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY); + impl->fd = -1; } else { int merge = anv_gem_sync_file_merge(device, in_fence, impl->fd); if (merge == -1) @@ -1667,10 +1670,9 @@ anv_cmd_buffer_execbuf(struct anv_device *device, close(impl->fd); close(in_fence); + impl->fd = -1; in_fence = merge; } - - impl->fd = -1; break; case ANV_SEMAPHORE_TYPE_DRM_SYNCOBJ: -- 2.30.2