[Mesa-dev] [PATCH 6/6] si_descriptor: move velems nullity check before dereference

Julien Isorce julien.isorce at gmail.com
Thu Mar 16 14:25:28 UTC 2017


CID 1399479: Dereference before null check (REVERSE_INULL)
check_after_deref: Null-checking velems suggests that it may be null,
but it has already been dereferenced on all paths leading to the check.

Signed-off-by: Julien Isorce <jisorce at oblong.com>
---
 src/gallium/drivers/radeonsi/si_descriptors.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_descriptors.c b/src/gallium/drivers/radeonsi/si_descriptors.c
index eb79578..2e62725 100644
--- a/src/gallium/drivers/radeonsi/si_descriptors.c
+++ b/src/gallium/drivers/radeonsi/si_descriptors.c
@@ -949,15 +949,22 @@ bool si_upload_vertex_buffer_descriptors(struct si_context *sctx)
 {
 	struct si_vertex_element *velems = sctx->vertex_elements;
 	struct si_descriptors *desc = &sctx->vertex_buffers;
-	unsigned i, count = velems->count;
-	unsigned desc_list_byte_size = velems->desc_list_byte_size;
+	unsigned i, count;
+	unsigned desc_list_byte_size;
+	unsigned first_vb_use_mask;
 	uint64_t va;
 	uint32_t *ptr;
 
-	if (!sctx->vertex_buffers_dirty || !count || !velems)
+	if (!sctx->vertex_buffers_dirty || !velems)
 		return true;
 
-	unsigned first_vb_use_mask = velems->first_vb_use_mask;
+	count = velems->count;
+
+	if (!count)
+		return true;
+
+	desc_list_byte_size = velems->desc_list_byte_size;
+	first_vb_use_mask = velems->first_vb_use_mask;
 
 	/* Vertex buffer descriptors are the only ones which are uploaded
 	 * directly through a staging buffer and don't go through
-- 
2.7.4



More information about the mesa-dev mailing list