]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu/userq: Consolidate wait ioctl exit path
authorTvrtko Ursulin <tvrtko.ursulin@igalia.com>
Mon, 23 Feb 2026 12:41:32 +0000 (12:41 +0000)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 4 Mar 2026 18:15:00 +0000 (13:15 -0500)
If we gate the fence destruction with a check telling us whether there are
valid pointers in there we can eliminate the need for dual, basically
identical, exit paths.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit bea29bb0dd29012949cd44fdb122465a9fd5cf91)

drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c

index 7e9cf1868cc9f2f651662966a54448e103b55ce4..77969a6017a4931517c12edb1e19ccae683268a8 100644 (file)
@@ -983,32 +983,14 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
                        r = -EFAULT;
                        goto free_fences;
                }
-
-               kfree(fences);
-               kfree(fence_info);
        }
 
-       drm_exec_fini(&exec);
-       for (i = 0; i < num_read_bo_handles; i++)
-               drm_gem_object_put(gobj_read[i]);
-       kfree(gobj_read);
-
-       for (i = 0; i < num_write_bo_handles; i++)
-               drm_gem_object_put(gobj_write[i]);
-       kfree(gobj_write);
-
-       kfree(timeline_points);
-       kfree(timeline_handles);
-       kfree(syncobj_handles);
-       kfree(bo_handles_write);
-       kfree(bo_handles_read);
-
-       return 0;
-
 free_fences:
-       while (num_fences-- > 0)
-               dma_fence_put(fences[num_fences]);
-       kfree(fences);
+       if (fences) {
+               while (num_fences-- > 0)
+                       dma_fence_put(fences[num_fences]);
+               kfree(fences);
+       }
 free_fence_info:
        kfree(fence_info);
 exec_fini: