]> www.infradead.org Git - users/willy/xarray.git/commitdiff
drm/amd/display: Don't allow partial copy_from_user
authorHarry Wentland <harry.wentland@amd.com>
Wed, 27 Oct 2021 14:26:33 +0000 (10:26 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 5 Nov 2021 18:10:39 +0000 (14:10 -0400)
There is no reason to allow for partial buffers from userspace in our
debugfs. In this particular case callers will zero out the wr_buf but if
callers in the future don't do that we might be looking at corrupt data.

Linus puts it better than I can in
https://lkml.org/lkml/2021/10/26/993

Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c

index 3655663e079bae352bb6c1a72b96c20473bf956d..9d43ecb1f692dd7a6a5018512d34914adfbabc7c 100644 (file)
@@ -78,12 +78,10 @@ static int parse_write_buffer_into_params(char *wr_buf, uint32_t wr_buf_size,
 
        wr_buf_ptr = wr_buf;
 
-       r = copy_from_user(wr_buf_ptr, buf, wr_buf_size);
-
-               /* r is bytes not be copied */
-       if (r >= wr_buf_size) {
-               DRM_DEBUG_DRIVER("user data not be read\n");
-               return -EINVAL;
+       /* r is bytes not be copied */
+       if (copy_from_user(wr_buf_ptr, buf, wr_buf_size)) {
+               DRM_DEBUG_DRIVER("user data could not be read successfully\n");
+               return -EFAULT;
        }
 
        /* check number of parameters. isspace could not differ space and \n */