]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: validate sw_fini before function call
authorSunil Khatri <sunil.khatri@amd.com>
Wed, 9 Oct 2024 12:14:57 +0000 (17:44 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 22 Oct 2024 21:50:37 +0000 (17:50 -0400)
Before making a function call to sw_fini, validate
the function pointer like we do in sw_init.

Signed-off-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index e923aef78dfa2110e334a9ef1c9b12ad49f0cb49..89a3d4be044c92584bf0b07ff7e908b584515af7 100644 (file)
@@ -3379,12 +3379,13 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)
                        amdgpu_ib_pool_fini(adev);
                        amdgpu_seq64_fini(adev);
                }
-
-               r = adev->ip_blocks[i].version->funcs->sw_fini(&adev->ip_blocks[i]);
-               /* XXX handle errors */
-               if (r) {
-                       DRM_DEBUG("sw_fini of IP block <%s> failed %d\n",
-                                 adev->ip_blocks[i].version->funcs->name, r);
+               if (adev->ip_blocks[i].version->funcs->sw_fini) {
+                       r = adev->ip_blocks[i].version->funcs->sw_fini(&adev->ip_blocks[i]);
+                       /* XXX handle errors */
+                       if (r) {
+                               DRM_DEBUG("sw_fini of IP block <%s> failed %d\n",
+                                         adev->ip_blocks[i].version->funcs->name, r);
+                       }
                }
                adev->ip_blocks[i].status.sw = false;
                adev->ip_blocks[i].status.valid = false;