]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amdgpu: Fix error codes if copy_to_user() fails
authorDan Carpenter <dan.carpenter@linaro.org>
Thu, 4 Sep 2025 18:58:49 +0000 (21:58 +0300)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 5 Sep 2025 21:38:42 +0000 (17:38 -0400)
The copy_to_user() function returns the number of bytes that it wasn't
able to copy, but we should return -EFAULT to the user.

Fixes: 4d82724f7f2b ("drm/amdgpu: Add mapping info option for GEM_OP ioctl")
Fixes: f9db1fc52ceb ("drm/amdgpu: Add ioctl to get all gem handles for a process")
Reviewed-By: David Francis <David.Francis@amd.com>
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c

index 8bec41cdccd7757cafa285cb60d2a736e3b8ec1b..6301757467805d44b1c335a2f0eadcca6ab6d957 100644 (file)
@@ -1066,7 +1066,8 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
                drm_exec_fini(&exec);
 
                if (num_mappings > 0 && num_mappings <= args->num_entries)
-                       r = copy_to_user(u64_to_user_ptr(args->value), vm_entries, num_mappings * sizeof(*vm_entries));
+                       if (copy_to_user(u64_to_user_ptr(args->value), vm_entries, num_mappings * sizeof(*vm_entries)))
+                               r = -EFAULT;
 
                args->num_entries = num_mappings;
 
@@ -1158,7 +1159,8 @@ int amdgpu_gem_list_handles_ioctl(struct drm_device *dev, void *data,
        args->num_entries = bo_index;
 
        if (!ret)
-               ret = copy_to_user(u64_to_user_ptr(args->entries), bo_entries, num_bos * sizeof(*bo_entries));
+               if (copy_to_user(u64_to_user_ptr(args->entries), bo_entries, num_bos * sizeof(*bo_entries)))
+                       ret = -EFAULT;
 
        kvfree(bo_entries);