From 4eb0475b5a0047e368129550e4c07a450a233a74 Mon Sep 17 00:00:00 2001 From: "Juan A. Suarez Romero" Date: Wed, 21 Jul 2021 19:29:49 +0200 Subject: [PATCH] v3dv: assert job->cmd_buffer is valid In v3dv_write_uniforms_wg_offsets() function, the job's cmd_buffer is a valid command buffer, so there is no reason to check if its NULL or not. This fixes CID#1487441 ("Dereference after null check") error. v1: - `job->cmd_buffer` is the same as `cmd_buffer` (Alejandro) v2: - Use `cmd_buffer` instead of `job->cmd_buffer` (Iago) Fixes: 31a786c80ad ("v3dv: handle QUNIFORM_FB_LAYERS") Reviewed-by: Iago Toral Quiroga Signed-off-by: Juan A. Suarez Romero Part-of: --- src/broadcom/vulkan/v3dv_uniforms.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_uniforms.c b/src/broadcom/vulkan/v3dv_uniforms.c index 7b1f3ed..d97d3b2 100644 --- a/src/broadcom/vulkan/v3dv_uniforms.c +++ b/src/broadcom/vulkan/v3dv_uniforms.c @@ -401,6 +401,7 @@ v3dv_write_uniforms_wg_offsets(struct v3dv_cmd_buffer *cmd_buffer, struct v3dv_job *job = cmd_buffer->state.job; assert(job); + assert(job->cmd_buffer == cmd_buffer); struct texture_bo_list tex_bos = { 0 }; struct state_bo_list state_bos = { 0 }; @@ -510,11 +511,10 @@ v3dv_write_uniforms_wg_offsets(struct v3dv_cmd_buffer *cmd_buffer, uint32_t num_layers; if (job->frame_tiling.layers != 0) { num_layers = job->frame_tiling.layers; - } else if (job->cmd_buffer && - job->cmd_buffer->state.framebuffer) { - num_layers = job->cmd_buffer->state.framebuffer->layers; + } else if (cmd_buffer->state.framebuffer) { + num_layers = cmd_buffer->state.framebuffer->layers; } else { - assert(job->cmd_buffer->level == VK_COMMAND_BUFFER_LEVEL_SECONDARY); + assert(cmd_buffer->level == VK_COMMAND_BUFFER_LEVEL_SECONDARY); num_layers = 2048; #if DEBUG fprintf(stderr, "Skipping gl_LayerID shader sanity check for " -- 2.7.4