drm/amdgpu: Check if NBIO funcs are NULL in amdgpu_device_baco_exit
authorFriedrich Vock <friedrich.vock@gmx.de>
Tue, 14 May 2024 07:06:38 +0000 (09:06 +0200)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 17 May 2024 21:40:36 +0000 (17:40 -0400)
The special case for VM passthrough doesn't check adev->nbio.funcs
before dereferencing it. If GPUs that don't have an NBIO block are
passed through, this leads to a NULL pointer dereference on startup.

Signed-off-by: Friedrich Vock <friedrich.vock@gmx.de>
Fixes: 1bece222eabe ("drm/amdgpu: Clear doorbell interrupt status for Sienna Cichlid")
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Acked-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 00fe3c2..e72e774 100644 (file)
@@ -6167,7 +6167,7 @@ int amdgpu_device_baco_exit(struct drm_device *dev)
            adev->nbio.funcs->enable_doorbell_interrupt)
                adev->nbio.funcs->enable_doorbell_interrupt(adev, true);
 
-       if (amdgpu_passthrough(adev) &&
+       if (amdgpu_passthrough(adev) && adev->nbio.funcs &&
            adev->nbio.funcs->clear_doorbell_interrupt)
                adev->nbio.funcs->clear_doorbell_interrupt(adev);