From: Francisco Jerez Date: Fri, 18 Aug 2017 18:00:42 +0000 (-0700) Subject: anv: Add error handling to setup_empty_execbuf(). X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7ca124a6a3987fbfc09bc530761d44714c0da773;p=mesa.git anv: Add error handling to setup_empty_execbuf(). The anv_execbuf_add_bo() call can actually fail in practice, which should cause the QueueSubmit operation to fail. Reported by Coverity. CID: 1416606: Unchecked return value (CHECKED_RETURN) Fixes: 017cdb10cf (anv: Submit a dummy batch when only semaphores are provided.) Reviewed-by: Lionel Landwerlin --- diff --git a/src/intel/vulkan/anv_batch_chain.c b/src/intel/vulkan/anv_batch_chain.c index 0078cc5142e..26b5375903b 100644 --- a/src/intel/vulkan/anv_batch_chain.c +++ b/src/intel/vulkan/anv_batch_chain.c @@ -1424,11 +1424,13 @@ setup_execbuf_for_cmd_buffer(struct anv_execbuf *execbuf, return VK_SUCCESS; } -static void +static VkResult setup_empty_execbuf(struct anv_execbuf *execbuf, struct anv_device *device) { - anv_execbuf_add_bo(execbuf, &device->trivial_batch_bo, NULL, 0, - &device->alloc); + VkResult result = anv_execbuf_add_bo(execbuf, &device->trivial_batch_bo, + NULL, 0, &device->alloc); + if (result != VK_SUCCESS) + return result; execbuf->execbuf = (struct drm_i915_gem_execbuffer2) { .buffers_ptr = (uintptr_t) execbuf->objects, @@ -1439,6 +1441,8 @@ setup_empty_execbuf(struct anv_execbuf *execbuf, struct anv_device *device) .rsvd1 = device->context_id, .rsvd2 = 0, }; + + return VK_SUCCESS; } VkResult @@ -1541,13 +1545,13 @@ anv_cmd_buffer_execbuf(struct anv_device *device, } } - if (cmd_buffer) { + if (cmd_buffer) result = setup_execbuf_for_cmd_buffer(&execbuf, cmd_buffer); - if (result != VK_SUCCESS) - return result; - } else { - setup_empty_execbuf(&execbuf, device); - } + else + result = setup_empty_execbuf(&execbuf, device); + + if (result != VK_SUCCESS) + return result; if (execbuf.fence_count > 0) { assert(device->instance->physicalDevice.has_syncobj);