PM / hibernate: Remove unnecessary compat ioctl overrides
authorEric Biggers <ebiggers@google.com>
Sun, 8 Mar 2020 03:27:01 +0000 (19:27 -0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sat, 14 Mar 2020 10:55:08 +0000 (11:55 +0100)
Since the SNAPSHOT_GET_IMAGE_SIZE, SNAPSHOT_AVAIL_SWAP_SIZE, and
SNAPSHOT_ALLOC_SWAP_PAGE ioctls produce an loff_t result, and loff_t is
always 64-bit even in the compat case, there's no reason to have the
special compat handling for these ioctls.  Just remove this unneeded
code so that these ioctls call into snapshot_ioctl() directly, doing
just the compat_ptr() conversion on the argument.

(This unnecessary code was also causing a KMSAN false positive.)

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
kernel/power/user.c

index 77438954cc2b0af9540d732c2b48d06028b09a5b..58ed9478787fcf242edccfadc083d3cf2b629913 100644 (file)
@@ -409,21 +409,7 @@ snapshot_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
        switch (cmd) {
        case SNAPSHOT_GET_IMAGE_SIZE:
        case SNAPSHOT_AVAIL_SWAP_SIZE:
-       case SNAPSHOT_ALLOC_SWAP_PAGE: {
-               compat_loff_t __user *uoffset = compat_ptr(arg);
-               loff_t offset;
-               mm_segment_t old_fs;
-               int err;
-
-               old_fs = get_fs();
-               set_fs(KERNEL_DS);
-               err = snapshot_ioctl(file, cmd, (unsigned long) &offset);
-               set_fs(old_fs);
-               if (!err && put_user(offset, uoffset))
-                       err = -EFAULT;
-               return err;
-       }
-
+       case SNAPSHOT_ALLOC_SWAP_PAGE:
        case SNAPSHOT_CREATE_IMAGE:
                return snapshot_ioctl(file, cmd,
                                      (unsigned long) compat_ptr(arg));