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)
committerEric Engestrom <eric@engestrom.ch>
Thu, 26 Jan 2023 15:40:31 +0000 (15:40 +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>
(cherry picked from commit 3d37950fd9ddc7b43f06b4a5fa710fb7333978ce)

.pick_status.json
src/intel/vulkan/anv_batch_chain.c

index f98b9a9..fa89f1b 100644 (file)
         "description": "anv: check the return value of anv_execbuf_add_bo_bitset()",
         "nominated": true,
         "nomination_type": 0,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": null
     },
index 597c40d..3fd06fd 100644 (file)
@@ -1364,9 +1364,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.