]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
drm/amdgpu: Fix fence signaling race condition in userqueue
authorJesse.Zhang <Jesse.Zhang@amd.com>
Wed, 24 Sep 2025 08:00:06 +0000 (16:00 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 25 Sep 2025 19:53:23 +0000 (15:53 -0400)
commitb8ae2640f9acd4f411c9227d2493755d03fe440a
treea6412baf5ca246b3e207e65a4017b426ca0abf05
parent45da20e00d5da842e17dfc633072b127504f0d0e
drm/amdgpu: Fix fence signaling race condition in userqueue

This commit fixes a potential race condition in the userqueue fence
signaling mechanism by replacing dma_fence_is_signaled_locked() with
dma_fence_is_signaled().

The issue occurred because:
1. dma_fence_is_signaled_locked() should only be used when holding
   the fence's individual lock, not just the fence list lock
2. Using the locked variant without the proper fence lock could lead
   to double-signaling scenarios:
   - Hardware completion signals the fence
   - Software path also tries to signal the same fence

By using dma_fence_is_signaled() instead, we properly handle the
locking hierarchy and avoid the race condition while still maintaining
the necessary synchronization through the fence_list_lock.

v2: drop the comment (Christian)

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Jesse Zhang <Jesse.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c