fs: remove the access_ok() check in ioctl_fiemap
authorChristoph Hellwig <hch@lst.de>
Sat, 23 May 2020 07:30:15 +0000 (09:30 +0200)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 4 Jun 2020 03:16:55 +0000 (23:16 -0400)
access_ok just checks we are fed a proper user pointer.  We also do that
in copy_to_user itself, so no need to do this early.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ritesh Harjani <riteshh@linux.ibm.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Link: https://lore.kernel.org/r/20200523073016.2944131-9-hch@lst.de
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ioctl.c

index b16e962340db6c8416c2634cae8a33e3672617d9..d69786d1dd911502bea4b089efe8f57c205c69a2 100644 (file)
@@ -213,13 +213,9 @@ static int ioctl_fiemap(struct file *filp, struct fiemap __user *ufiemap)
        fieinfo.fi_extents_max = fiemap.fm_extent_count;
        fieinfo.fi_extents_start = ufiemap->fm_extents;
 
-       if (fiemap.fm_extent_count != 0 &&
-           !access_ok(fieinfo.fi_extents_start,
-                      fieinfo.fi_extents_max * sizeof(struct fiemap_extent)))
-               return -EFAULT;
-
        error = inode->i_op->fiemap(inode, &fieinfo, fiemap.fm_start,
                        fiemap.fm_length);
+
        fiemap.fm_flags = fieinfo.fi_flags;
        fiemap.fm_mapped_extents = fieinfo.fi_extents_mapped;
        if (copy_to_user(ufiemap, &fiemap, sizeof(fiemap)))