Commit fb1bf29a authored by Tvrtko Ursulin's avatar Tvrtko Ursulin Committed by Alex Deucher
Browse files

drm/amdgpu/userq: Use memdup_array_user in amdgpu_userq_wait_ioctl



Use the existing helper instead of multiplying the size.

Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@igalia.com>
Reviewed-by: default avatarSunil Khatri <sunil.khatri@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent e757981c
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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;