[PATCH] drm/amdgpu: Fix potential dma_fence leak in amdgpu_ttm_clear_buffer
Li Ma
li.ma at amd.com
Thu May 29 13:07:38 UTC 2025
The original code did not properly release the dma_fence `next` in case
amdgpu_ttm_fill_mem failed during buffer clearing.
Signed-off-by: Li Ma <li.ma at amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 9c5df35f05b7..b7284f0a5ac0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -2296,6 +2296,7 @@ int amdgpu_ttm_clear_buffer(struct amdgpu_bo *bo,
struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.bdev);
struct amdgpu_ring *ring = adev->mman.buffer_funcs_ring;
struct amdgpu_res_cursor cursor;
+ struct dma_fence *next = NULL;
u64 addr;
int r = 0;
@@ -2311,7 +2312,6 @@ int amdgpu_ttm_clear_buffer(struct amdgpu_bo *bo,
mutex_lock(&adev->mman.gtt_window_lock);
while (cursor.remaining) {
- struct dma_fence *next = NULL;
u64 size;
if (amdgpu_res_cleared(&cursor)) {
@@ -2334,10 +2334,13 @@ int amdgpu_ttm_clear_buffer(struct amdgpu_bo *bo,
dma_fence_put(*fence);
*fence = next;
+ next = NULL;
amdgpu_res_next(&cursor, size);
}
err:
+ if (next)
+ dma_fence_put(next);
mutex_unlock(&adev->mman.gtt_window_lock);
return r;
--
2.25.1
More information about the amd-gfx
mailing list