]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu/userq: Use memdup_array_user in amdgpu_userq_wait_ioctl
authorTvrtko Ursulin <tvrtko.ursulin@igalia.com>
Fri, 5 Dec 2025 13:40:29 +0000 (13:40 +0000)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 23 Feb 2026 19:39:32 +0000 (14:39 -0500)
Use the existing helper instead of multiplying the size.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: Sunil Khatri <sunil.khatri@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c

index 8013260e29dcae6edc616ac6d50e4e5089054d1f..506aaae0f897ec9a2f7fd3e8dde507b03bb11e43 100644 (file)
@@ -679,23 +679,24 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
        }
 
        num_syncobj = wait_info->num_syncobj_handles;
-       syncobj_handles = memdup_user(u64_to_user_ptr(wait_info->syncobj_handles),
-                                     size_mul(sizeof(u32), num_syncobj));
+       syncobj_handles = memdup_array_user(u64_to_user_ptr(wait_info->syncobj_handles),
+                                           num_syncobj, sizeof(u32));
        if (IS_ERR(syncobj_handles)) {
                r = PTR_ERR(syncobj_handles);
                goto free_bo_handles_write;
        }
 
        num_points = wait_info->num_syncobj_timeline_handles;
-       timeline_handles = memdup_user(u64_to_user_ptr(wait_info->syncobj_timeline_handles),
-                                      sizeof(u32) * num_points);
+       timeline_handles = memdup_array_user(u64_to_user_ptr(wait_info->syncobj_timeline_handles),
+                                            num_points, sizeof(u32));
        if (IS_ERR(timeline_handles)) {
                r = PTR_ERR(timeline_handles);
                goto free_syncobj_handles;
        }
 
-       timeline_points = memdup_user(u64_to_user_ptr(wait_info->syncobj_timeline_points),
-                                     sizeof(u32) * num_points);
+       timeline_points = memdup_array_user(u64_to_user_ptr(wait_info->syncobj_timeline_points),
+                                           num_points, sizeof(u32));
+
        if (IS_ERR(timeline_points)) {
                r = PTR_ERR(timeline_points);
                goto free_timeline_handles;