]> Gentwo Git Trees - linux/.git/commitdiff
drm/msm: Fix NULL pointer dereference in crashstate_get_vm_logs()
authorHuiwen He <hehuiwen@kylinos.cn>
Wed, 12 Nov 2025 17:04:11 +0000 (01:04 +0800)
committerRob Clark <rob.clark@oss.qualcomm.com>
Mon, 17 Nov 2025 17:43:58 +0000 (09:43 -0800)
crashstate_get_vm_logs() did not check the return value of
kmalloc_array(). In low-memory situations, kmalloc_array() may return
NULL, leading to a NULL pointer dereference when the function later
accesses state->vm_logs.

Fix this by checking the return value of kmalloc_array() and setting
state->nr_vm_logs to 0 if allocation fails.

Fixes: 9edc52967cc7 ("drm/msm: Add VM logging for VM_BIND updates")
Signed-off-by: Huiwen He <hehuiwen@kylinos.cn>
Patchwork: https://patchwork.freedesktop.org/patch/687555/
Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com>
drivers/gpu/drm/msm/msm_gpu.c

index 17759abc46d7d7af4117b1d71f1d5fba6ba0b61c..e23f70fbc8cb248150012e9645a65095fdaaa98a 100644 (file)
@@ -348,6 +348,10 @@ static void crashstate_get_vm_logs(struct msm_gpu_state *state, struct msm_gem_v
 
        state->vm_logs = kmalloc_array(
                state->nr_vm_logs, sizeof(vm->log[0]), GFP_KERNEL);
+       if (!state->vm_logs) {
+               state->nr_vm_logs = 0;
+       }
+
        for (int i = 0; i < state->nr_vm_logs; i++) {
                int idx = (i + first) & vm_log_mask;