f2fs: move mnt_want_write_file after arguments checking
It's needless of mnt_want_write_file for arguments checking. Signed-off-by: Kinglong Mee <kinglongmee@gmail.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
74492a8e11
commit
0ec599668d
1 changed files with 21 additions and 29 deletions
|
@ -2042,45 +2042,37 @@ static int f2fs_ioc_defragment(struct file *filp, unsigned long arg)
|
||||||
if (!S_ISREG(inode->i_mode))
|
if (!S_ISREG(inode->i_mode))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (f2fs_readonly(sbi->sb))
|
||||||
|
return -EROFS;
|
||||||
|
|
||||||
|
if (copy_from_user(&range, (struct f2fs_defragment __user *)arg,
|
||||||
|
sizeof(range)))
|
||||||
|
return -EFAULT;
|
||||||
|
|
||||||
|
/* verify alignment of offset & size */
|
||||||
|
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))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
err = mnt_want_write_file(filp);
|
err = mnt_want_write_file(filp);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (f2fs_readonly(sbi->sb)) {
|
|
||||||
err = -EROFS;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (copy_from_user(&range, (struct f2fs_defragment __user *)arg,
|
|
||||||
sizeof(range))) {
|
|
||||||
err = -EFAULT;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* verify alignment of offset & size */
|
|
||||||
if (range.start & (F2FS_BLKSIZE - 1) ||
|
|
||||||
range.len & (F2FS_BLKSIZE - 1)) {
|
|
||||||
err = -EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (unlikely((range.start + range.len) >> PAGE_SHIFT >
|
|
||||||
sbi->max_file_blocks)) {
|
|
||||||
err = -EINVAL;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
err = f2fs_defragment_range(sbi, filp, &range);
|
err = f2fs_defragment_range(sbi, filp, &range);
|
||||||
|
mnt_drop_write_file(filp);
|
||||||
|
|
||||||
f2fs_update_time(sbi, REQ_TIME);
|
f2fs_update_time(sbi, REQ_TIME);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto out;
|
return err;
|
||||||
|
|
||||||
if (copy_to_user((struct f2fs_defragment __user *)arg, &range,
|
if (copy_to_user((struct f2fs_defragment __user *)arg, &range,
|
||||||
sizeof(range)))
|
sizeof(range)))
|
||||||
err = -EFAULT;
|
return -EFAULT;
|
||||||
out:
|
|
||||||
mnt_drop_write_file(filp);
|
return 0;
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int f2fs_move_file_range(struct file *file_in, loff_t pos_in,
|
static int f2fs_move_file_range(struct file *file_in, loff_t pos_in,
|
||||||
|
|
Loading…
Add table
Reference in a new issue