]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: fix syncobj leak for amdgpu_gem_va_ioctl()
authorPrike Liang <Prike.Liang@amd.com>
Thu, 19 Mar 2026 06:47:11 +0000 (14:47 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 24 Mar 2026 17:32:22 +0000 (13:32 -0400)
It requires freeing the syncobj and chain
alloction resource.

Signed-off-by: Prike Liang <Prike.Liang@amd.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_gem.c

index 4ebb99e22ff27f3ad55c374bfbcc468437905be4..5376035d32fe8e56b5497e53536e3c942fddc303 100644 (file)
@@ -107,6 +107,7 @@ amdgpu_gem_update_timeline_node(struct drm_file *filp,
        *chain = dma_fence_chain_alloc();
        if (!*chain) {
                drm_syncobj_put(*syncobj);
+               *syncobj = NULL;
                return -ENOMEM;
        }
 
@@ -980,6 +981,7 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
                                                      timeline_chain,
                                                      fence,
                                                      args->vm_timeline_point);
+                               timeline_chain = NULL;
                        }
                }
                dma_fence_put(fence);
@@ -987,6 +989,9 @@ int amdgpu_gem_va_ioctl(struct drm_device *dev, void *data,
        }
 
 error:
+       dma_fence_chain_free(timeline_chain);
+       if (timeline_syncobj)
+               drm_syncobj_put(timeline_syncobj);
        drm_exec_fini(&exec);
 error_put_gobj:
        drm_gem_object_put(gobj);