Skip to content

Commit 72ecb1d

Browse files
superm1alexdeucher
authored andcommitted
drm/amd: Fix a few more NULL pointer dereference in device cleanup
I found a few more paths that cleanup fails due to a NULL version pointer on unsupported hardware. Add NULL checks as applicable. Fixes: 39fc2bc ("drm/amdgpu: Protect GPU register accesses in powergated state in some paths") Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit f5a05f8) Cc: stable@vger.kernel.org
1 parent a657104 commit 72ecb1d

1 file changed

Lines changed: 6 additions & 0 deletions

File tree

drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3497,6 +3497,8 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
34973497
int i, r;
34983498

34993499
for (i = 0; i < adev->num_ip_blocks; i++) {
3500+
if (!adev->ip_blocks[i].version)
3501+
continue;
35003502
if (!adev->ip_blocks[i].version->funcs->early_fini)
35013503
continue;
35023504

@@ -3574,6 +3576,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)
35743576
if (!adev->ip_blocks[i].status.sw)
35753577
continue;
35763578

3579+
if (!adev->ip_blocks[i].version)
3580+
continue;
35773581
if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) {
35783582
amdgpu_ucode_free_bo(adev);
35793583
amdgpu_free_static_csa(&adev->virt.csa_obj);
@@ -3600,6 +3604,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)
36003604
for (i = adev->num_ip_blocks - 1; i >= 0; i--) {
36013605
if (!adev->ip_blocks[i].status.late_initialized)
36023606
continue;
3607+
if (!adev->ip_blocks[i].version)
3608+
continue;
36033609
if (adev->ip_blocks[i].version->funcs->late_fini)
36043610
adev->ip_blocks[i].version->funcs->late_fini(&adev->ip_blocks[i]);
36053611
adev->ip_blocks[i].status.late_initialized = false;

0 commit comments

Comments
 (0)