forked from Minki/linux
vfs: no mnt_want_write_file() in vfs_{copy,clone}_file_range()
We've checked for file_out being opened for write. This ensures that we already have mnt_want_write() on target. Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
8d3e293637
commit
3616119da4
@ -1538,9 +1538,7 @@ ssize_t vfs_copy_file_range(struct file *file_in, loff_t pos_in,
|
||||
if (len == 0)
|
||||
return 0;
|
||||
|
||||
ret = mnt_want_write_file(file_out);
|
||||
if (ret)
|
||||
return ret;
|
||||
sb_start_write(inode_out->i_sb);
|
||||
|
||||
ret = -EOPNOTSUPP;
|
||||
if (file_out->f_op->copy_file_range)
|
||||
@ -1559,7 +1557,7 @@ ssize_t vfs_copy_file_range(struct file *file_in, loff_t pos_in,
|
||||
inc_syscr(current);
|
||||
inc_syscw(current);
|
||||
|
||||
mnt_drop_write_file(file_out);
|
||||
sb_end_write(inode_out->i_sb);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -1685,9 +1683,7 @@ int vfs_clone_file_range(struct file *file_in, loff_t pos_in,
|
||||
if (pos_in + len > i_size_read(inode_in))
|
||||
return -EINVAL;
|
||||
|
||||
ret = mnt_want_write_file(file_out);
|
||||
if (ret)
|
||||
return ret;
|
||||
sb_start_write(inode_out->i_sb);
|
||||
|
||||
ret = file_in->f_op->clone_file_range(file_in, pos_in,
|
||||
file_out, pos_out, len);
|
||||
@ -1696,7 +1692,7 @@ int vfs_clone_file_range(struct file *file_in, loff_t pos_in,
|
||||
fsnotify_modify(file_out);
|
||||
}
|
||||
|
||||
mnt_drop_write_file(file_out);
|
||||
sb_end_write(inode_out->i_sb);
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(vfs_clone_file_range);
|
||||
|
Loading…
Reference in New Issue
Block a user