]> git.ipfire.org Git - thirdparty/linux.git/commit
drm/amdgpu/userq: fix dma_fence refcount underflow in userq path
authorSunil Khatri <sunil.khatri@amd.com>
Fri, 13 Mar 2026 07:11:22 +0000 (12:41 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 17 Mar 2026 14:42:27 +0000 (10:42 -0400)
commit7a14a4e9b3fda05b907d0445a3be9e7c0e887f4e
treeeccb5446d3a6342648814c5cc4653565c86633ff
parent311f8fc05c8d1a0e65e9f91348e6d2be8cf58c60
drm/amdgpu/userq: fix dma_fence refcount underflow in userq path

An extra dma_fence_put() can drop the last reference to a fence while it is
still attached to a dma_resv object. This frees the fence prematurely via
dma_fence_release() while other users still hold the pointer.

Later accesses through dma_resv iteration may then operate on the freed
fence object, leading to refcount underflow warnings and potential hangs
when walking reservation fences.

Fix this by correcting the fence lifetime so the dma_resv object retains a
valid reference until it is done with the fence.i

[   31.133803] refcount_t: underflow; use-after-free.
[   31.133805] WARNING: lib/refcount.c:28 at refcount_warn_saturate+0x58/0x90, CPU#18: kworker/u96:1/188

Signed-off-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.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_userq_fence.c