From 156d7dd01204fbd1d4e599ed44435727180efca5 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 30 Jan 2023 20:12:01 -0600 Subject: [PATCH] nvk: Don't crash if we fail to allocate a push BO Currently, we continue just fine until nvk_EndCommandBuffer calls nvk_cmd_buffer_flush_push() and it crashes tring to look at cmd->push_bo. Part-of: --- src/nouveau/vulkan/nvk_cmd_buffer.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/nouveau/vulkan/nvk_cmd_buffer.c b/src/nouveau/vulkan/nvk_cmd_buffer.c index a88d2837458..9720243b484 100644 --- a/src/nouveau/vulkan/nvk_cmd_buffer.c +++ b/src/nouveau/vulkan/nvk_cmd_buffer.c @@ -114,12 +114,14 @@ nvk_cmd_buffer_new_push(struct nvk_cmd_buffer *cmd) static void nvk_cmd_buffer_flush_push(struct nvk_cmd_buffer *cmd) { - struct nvk_cmd_push push = { - .bo = cmd->push_bo, - .start_dw = cmd->push.start - (uint32_t *)cmd->push_bo->map, - .dw_count = nv_push_dw_count(&cmd->push), - }; - util_dynarray_append(&cmd->pushes, struct nvk_cmd_push, push); + if (likely(cmd->push_bo != NULL)) { + struct nvk_cmd_push push = { + .bo = cmd->push_bo, + .start_dw = cmd->push.start - (uint32_t *)cmd->push_bo->map, + .dw_count = nv_push_dw_count(&cmd->push), + }; + util_dynarray_append(&cmd->pushes, struct nvk_cmd_push, push); + } cmd->push.start = cmd->push.end; }