Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: Add a NULL check for freeing root PT

This patch adds a NULL check to fix this crash reported during the
freeing of root PT entry:

BUG: unable to handle page fault for address: ffffc9002d637aa0
#PF: supervisor write access in kernel mode
#PF: error_code(0x0002) - not-present page
RIP: 0010:amdgpu_vm_pt_free+0x66/0xe0 [amdgpu]
PKRU: 55555554
Call Trace:
<TASK>
amdgpu_vm_pt_free_root+0x60/0xa0 [amdgpu]
amdgpu_vm_fini+0x2cb/0x5d0 [amdgpu]
? amdgpu_ctx_mgr_entity_fini+0x53/0x1c0 [amdgpu]
amdgpu_driver_postclose_kms+0x191/0x2d0 [amdgpu]
drm_file_free.part.0+0x1e5/0x260 [drm]

Cc: Christian König <Christian.Koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Felix Kuehling <felix.kuehling@amd.com>
Cc: Rajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
Acked-by: Christian König <Christian.Koenig@amd.com>
Signed-off-by: Shashank Sharma <shashank.sharma@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Shashank Sharma and committed by
Alex Deucher
f88a7dd0 acf760c8

+4 -2
+4 -2
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c
··· 688 688 struct amdgpu_vm_pt_cursor cursor; 689 689 struct amdgpu_vm_bo_base *entry; 690 690 691 - for_each_amdgpu_vm_pt_dfs_safe(adev, vm, NULL, cursor, entry) 692 - amdgpu_vm_pt_free(entry); 691 + for_each_amdgpu_vm_pt_dfs_safe(adev, vm, NULL, cursor, entry) { 692 + if (entry) 693 + amdgpu_vm_pt_free(entry); 694 + } 693 695 } 694 696 695 697 /**