From c206107ada292c118dfe49a7f771f7fd1184f98a Mon Sep 17 00:00:00 2001 From: Sanjay Yadav Date: Fri, 11 Nov 2022 17:55:23 +0530 Subject: [PATCH] msm: kgsl: Fix static checker warnings Return value of find_va() can be null. Also, context can be null if obj is null in reset_and_snapshot(). Add checks to avoid null pointer dereference. Initialized cmd.version and cmd.gmu_context_queue_addr variables with 0. Change-Id: Id7e26d38e38de0d9a87dc159b6655b74ff6899f6 Signed-off-by: Sanjay Yadav --- drivers/gpu/msm/adreno_a6xx_hwsched_hfi.c | 4 +--- drivers/gpu/msm/adreno_gen7_gmu.c | 3 ++- drivers/gpu/msm/adreno_gen7_hwsched_hfi.c | 4 +--- drivers/gpu/msm/adreno_hwsched.c | 4 ++-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/msm/adreno_a6xx_hwsched_hfi.c b/drivers/gpu/msm/adreno_a6xx_hwsched_hfi.c index ce83bfe33769..b6681e8c7bfb 100644 --- a/drivers/gpu/msm/adreno_a6xx_hwsched_hfi.c +++ b/drivers/gpu/msm/adreno_a6xx_hwsched_hfi.c @@ -1485,7 +1485,7 @@ static int send_context_pointers(struct adreno_device *adreno_dev, struct kgsl_context *context) { struct kgsl_device *device = KGSL_DEVICE(adreno_dev); - struct hfi_context_pointers_cmd cmd; + struct hfi_context_pointers_cmd cmd = {0}; int ret; ret = CMD_MSG_HDR(cmd, H2F_MSG_CONTEXT_POINTERS); @@ -1498,8 +1498,6 @@ static int send_context_pointers(struct adreno_device *adreno_dev, if (context->user_ctxt_record) cmd.user_ctxt_record_addr = context->user_ctxt_record->memdesc.gpuaddr; - else - cmd.user_ctxt_record_addr = 0; return a6xx_hfi_send_cmd_async(adreno_dev, &cmd); } diff --git a/drivers/gpu/msm/adreno_gen7_gmu.c b/drivers/gpu/msm/adreno_gen7_gmu.c index 28782d5ee17e..ec50c0d06167 100644 --- a/drivers/gpu/msm/adreno_gen7_gmu.c +++ b/drivers/gpu/msm/adreno_gen7_gmu.c @@ -1045,7 +1045,8 @@ static int _map_gmu_dynamic(struct gen7_gmu_device *gmu, spin_lock(&vma->lock); vma_node = find_va(vma, md->gmuaddr, md->size); - rb_erase(&vma_node->node, &vma->vma_root); + if (vma_node) + rb_erase(&vma_node->node, &vma->vma_root); spin_unlock(&vma->lock); kfree(vma_node); diff --git a/drivers/gpu/msm/adreno_gen7_hwsched_hfi.c b/drivers/gpu/msm/adreno_gen7_hwsched_hfi.c index 52877c92a409..f5df37c103e7 100644 --- a/drivers/gpu/msm/adreno_gen7_hwsched_hfi.c +++ b/drivers/gpu/msm/adreno_gen7_hwsched_hfi.c @@ -1760,7 +1760,7 @@ static int send_context_pointers(struct adreno_device *adreno_dev, struct kgsl_context *context) { struct kgsl_device *device = KGSL_DEVICE(adreno_dev); - struct hfi_context_pointers_cmd cmd; + struct hfi_context_pointers_cmd cmd = {0}; struct adreno_context *drawctxt = ADRENO_CONTEXT(context); int ret; @@ -1774,8 +1774,6 @@ static int send_context_pointers(struct adreno_device *adreno_dev, if (context->user_ctxt_record) cmd.user_ctxt_record_addr = context->user_ctxt_record->memdesc.gpuaddr; - else - cmd.user_ctxt_record_addr = 0; if (adreno_hwsched_context_queue_enabled(adreno_dev)) cmd.gmu_context_queue_addr = drawctxt->gmu_context_queue.gmuaddr; diff --git a/drivers/gpu/msm/adreno_hwsched.c b/drivers/gpu/msm/adreno_hwsched.c index cb585ae8f6f4..cc9ddc9fa48b 100644 --- a/drivers/gpu/msm/adreno_hwsched.c +++ b/drivers/gpu/msm/adreno_hwsched.c @@ -1725,10 +1725,10 @@ static void adreno_hwsched_reset_and_snapshot(struct adreno_device *adreno_dev, if (drawobj) { force_retire_timestamp(device, drawobj); - if ((context->flags & KGSL_CONTEXT_INVALIDATE_ON_FAULT) || + if (context && ((context->flags & KGSL_CONTEXT_INVALIDATE_ON_FAULT) || (context->flags & KGSL_CONTEXT_NO_FAULT_TOLERANCE) || (cmd->error == GMU_GPU_SW_HANG) || - context_is_throttled(device, context)) + context_is_throttled(device, context))) adreno_drawctxt_set_guilty(device, context); /* * Put back the reference which we incremented while trying to find