drm/amdgpu/userq: Use memdup_array_user in amdgpu_userq_wait_ioctl

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>
This commit is contained in:
Tvrtko Ursulin 2025-12-05 13:40:29 +00:00 committed by Alex Deucher
parent e757981cd8
commit fb1bf29acd

View 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;