Commit f5a05f84 authored by Mario Limonciello's avatar Mario Limonciello Committed by Alex Deucher
Browse files

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: 39fc2bc4 ("drm/amdgpu: Protect GPU register accesses in powergated state in some paths")
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 0b78bb6e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2800,6 +2800,8 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
	int i, r;

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

@@ -2877,6 +2879,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)
		if (!adev->ip_blocks[i].status.sw)
			continue;

		if (!adev->ip_blocks[i].version)
			continue;
		if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) {
			amdgpu_ucode_free_bo(adev);
			amdgpu_free_static_csa(&adev->virt.csa_obj);
@@ -2903,6 +2907,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)
	for (i = adev->num_ip_blocks - 1; i >= 0; i--) {
		if (!adev->ip_blocks[i].status.late_initialized)
			continue;
		if (!adev->ip_blocks[i].version)
			continue;
		if (adev->ip_blocks[i].version->funcs->late_fini)
			adev->ip_blocks[i].version->funcs->late_fini(&adev->ip_blocks[i]);
		adev->ip_blocks[i].status.late_initialized = false;