drm/msm: Fix null pointer dereferences without iommu
authorLuca Weiss <luca@z3ntu.xyz>
Thu, 21 Apr 2022 20:34:53 +0000 (22:34 +0200)
committerRob Clark <robdclark@chromium.org>
Mon, 2 May 2022 17:11:44 +0000 (10:11 -0700)
Check if 'aspace' is set before using it as it will stay null without
IOMMU, such as on msm8974.

Fixes: bc2112583a0b ("drm/msm/gpu: Track global faults per address-space")
Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
Link: https://lore.kernel.org/r/20220421203455.313523-1-luca@z3ntu.xyz
Signed-off-by: Rob Clark <robdclark@chromium.org>
drivers/gpu/drm/msm/adreno/adreno_gpu.c
drivers/gpu/drm/msm/msm_gpu.c

index 4caae022951884741d4e84577b41d66b69704711..4e665c806a14ea33e7f139bb4e138796835f680c 100644 (file)
@@ -276,7 +276,10 @@ int adreno_get_param(struct msm_gpu *gpu, struct msm_file_private *ctx,
                *value = 0;
                return 0;
        case MSM_PARAM_FAULTS:
-               *value = gpu->global_faults + ctx->aspace->faults;
+               if (ctx->aspace)
+                       *value = gpu->global_faults + ctx->aspace->faults;
+               else
+                       *value = gpu->global_faults;
                return 0;
        case MSM_PARAM_SUSPENDS:
                *value = gpu->suspend_count;
index 32ffe1c0e82cf48fbb62bf306b1be44e20f9b0c9..eb8a6663f309f49326b3eeb317b41de316e3e2ad 100644 (file)
@@ -391,7 +391,8 @@ static void recover_worker(struct kthread_work *work)
        if (submit) {
                /* Increment the fault counts */
                submit->queue->faults++;
-               submit->aspace->faults++;
+               if (submit->aspace)
+                       submit->aspace->faults++;
 
                get_comm_cmdline(submit, &comm, &cmd);