anv: check the return value of anv_execbuf_add_bo_bitset()
authorPaulo Zanoni <paulo.r.zanoni@intel.com>
Sat, 14 Jan 2023 00:51:59 +0000 (16:51 -0800)
committerMarge Bot <emma+marge@anholt.net>
Thu, 19 Jan 2023 02:21:09 +0000 (02:21 +0000)
Because anv_execbuf_add_bo_bitset() calls anv_execbuf_add_bo(), which
can fail if its memory allocations fail.

I have seen dEQP tests exercising memory allocation failures during
anv_execbuf_add_bo(), but I don't think the path coming from
add_bo_biset() was specifically exercised. Anyway, add the error check
just in case.

v2: Rebase.

Cc: mesa-stable
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20703>

src/intel/vulkan/i915/anv_batch_chain.c

index 4e71985..705c5a0 100644 (file)
@@ -292,9 +292,11 @@ setup_execbuf_for_cmd_buffer(struct anv_execbuf *execbuf,
 {
    VkResult result;
    /* Add surface dependencies (BOs) to the execbuf */
-   anv_execbuf_add_bo_bitset(cmd_buffer->device, execbuf,
-                             cmd_buffer->surface_relocs.dep_words,
-                             cmd_buffer->surface_relocs.deps, 0);
+   result = anv_execbuf_add_bo_bitset(cmd_buffer->device, execbuf,
+                                      cmd_buffer->surface_relocs.dep_words,
+                                      cmd_buffer->surface_relocs.deps, 0);
+   if (result != VK_SUCCESS)
+      return result;
 
    /* First, we walk over all of the bos we've seen and add them and their
     * relocations to the validate list.