amdgpu_ring_set_fence_errors_and_reemit() unconditionally dereferenced guilty_fence when ring_backup_entries_to_copy is zero, which can happen when queue reset runs without a tracked guilty fence.
Pass NULL safely to amdgpu_fence_driver_force_completion() when no guilty fence is available, avoiding a NULL pointer dereference while keeping reset/recovery flow unchanged. Signed-off-by: Jesse Zhang <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c index 3043ad041bb4..ff1a82a4cdac 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c @@ -733,7 +733,8 @@ void amdgpu_ring_set_fence_errors_and_reemit(struct amdgpu_ring *ring, * we are skipping it on purpose. */ if (!ring->ring_backup_entries_to_copy) { - amdgpu_fence_driver_force_completion(ring, &guilty_fence->base); + amdgpu_fence_driver_force_completion(ring, + guilty_fence ? &guilty_fence->base : NULL); return; } ring->reemit = true; -- 2.49.0
