drm/msm: prevent NULL dereference in msm_gpu_crashstate_capture()
authorTim Gardner <tim.gardner@canonical.com>
Wed, 29 Sep 2021 16:25:54 +0000 (10:25 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 18 Nov 2021 18:16:16 +0000 (19:16 +0100)
[ Upstream commit b220c154832c5cd0df34cbcbcc19d7135c16e823 ]

Coverity complains of a possible NULL dereference:

CID 120718 (#1 of 1): Dereference null return value (NULL_RETURNS)
23. dereference: Dereferencing a pointer that might be NULL state->bos when
    calling msm_gpu_crashstate_get_bo. [show details]
301                        msm_gpu_crashstate_get_bo(state, submit->bos[i].obj,
302                                submit->bos[i].iova, submit->bos[i].flags);

Fix this by employing the same state->bos NULL check as is used in the next
for loop.

Cc: Rob Clark <robdclark@gmail.com>
Cc: Sean Paul <sean@poorly.run>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: linux-arm-msm@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: freedreno@lists.freedesktop.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20210929162554.14295-1-tim.gardner@canonical.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/msm/msm_gpu.c

index 8a3a592da3a4d76d84a7715a2d54e138ac04ef15..2c46cd968ac4c742e6f88c918ac39ade7d81ca3b 100644 (file)
@@ -296,7 +296,7 @@ static void msm_gpu_crashstate_capture(struct msm_gpu *gpu,
                state->bos = kcalloc(nr,
                        sizeof(struct msm_gpu_state_bo), GFP_KERNEL);
 
-               for (i = 0; i < submit->nr_bos; i++) {
+               for (i = 0; state->bos && i < submit->nr_bos; i++) {
                        if (should_dump(submit, i)) {
                                msm_gpu_crashstate_get_bo(state, submit->bos[i].obj,
                                        submit->bos[i].iova, submit->bos[i].flags);