Loading fs/f2fs/file.c +18 −26 Original line number Diff line number Diff line Loading @@ -2037,45 +2037,37 @@ static int f2fs_ioc_defragment(struct file *filp, unsigned long arg) if (!S_ISREG(inode->i_mode)) return -EINVAL; err = mnt_want_write_file(filp); if (err) return err; if (f2fs_readonly(sbi->sb)) { err = -EROFS; goto out; } if (f2fs_readonly(sbi->sb)) return -EROFS; if (copy_from_user(&range, (struct f2fs_defragment __user *)arg, sizeof(range))) { err = -EFAULT; goto out; } sizeof(range))) return -EFAULT; /* verify alignment of offset & size */ if (range.start & (F2FS_BLKSIZE - 1) || range.len & (F2FS_BLKSIZE - 1)) { err = -EINVAL; goto out; } if (range.start & (F2FS_BLKSIZE - 1) || range.len & (F2FS_BLKSIZE - 1)) return -EINVAL; if (unlikely((range.start + range.len) >> PAGE_SHIFT > sbi->max_file_blocks)) { err = -EINVAL; goto out; } sbi->max_file_blocks)) return -EINVAL; err = mnt_want_write_file(filp); if (err) return err; err = f2fs_defragment_range(sbi, filp, &range); mnt_drop_write_file(filp); f2fs_update_time(sbi, REQ_TIME); if (err < 0) goto out; return err; if (copy_to_user((struct f2fs_defragment __user *)arg, &range, sizeof(range))) err = -EFAULT; out: mnt_drop_write_file(filp); return err; return -EFAULT; return 0; } static int f2fs_move_file_range(struct file *file_in, loff_t pos_in, Loading Loading
fs/f2fs/file.c +18 −26 Original line number Diff line number Diff line Loading @@ -2037,45 +2037,37 @@ static int f2fs_ioc_defragment(struct file *filp, unsigned long arg) if (!S_ISREG(inode->i_mode)) return -EINVAL; err = mnt_want_write_file(filp); if (err) return err; if (f2fs_readonly(sbi->sb)) { err = -EROFS; goto out; } if (f2fs_readonly(sbi->sb)) return -EROFS; if (copy_from_user(&range, (struct f2fs_defragment __user *)arg, sizeof(range))) { err = -EFAULT; goto out; } sizeof(range))) return -EFAULT; /* verify alignment of offset & size */ if (range.start & (F2FS_BLKSIZE - 1) || range.len & (F2FS_BLKSIZE - 1)) { err = -EINVAL; goto out; } if (range.start & (F2FS_BLKSIZE - 1) || range.len & (F2FS_BLKSIZE - 1)) return -EINVAL; if (unlikely((range.start + range.len) >> PAGE_SHIFT > sbi->max_file_blocks)) { err = -EINVAL; goto out; } sbi->max_file_blocks)) return -EINVAL; err = mnt_want_write_file(filp); if (err) return err; err = f2fs_defragment_range(sbi, filp, &range); mnt_drop_write_file(filp); f2fs_update_time(sbi, REQ_TIME); if (err < 0) goto out; return err; if (copy_to_user((struct f2fs_defragment __user *)arg, &range, sizeof(range))) err = -EFAULT; out: mnt_drop_write_file(filp); return err; return -EFAULT; return 0; } static int f2fs_move_file_range(struct file *file_in, loff_t pos_in, Loading