build_mount_idmapped(): switch to fdget()
Reviewed-by: Christian Brauner <brauner@kernel.org> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
38e1240862
commit
96e85e95dc
|
@ -4197,7 +4197,7 @@ static int build_mount_idmapped(const struct mount_attr *attr, size_t usize,
|
|||
int err = 0;
|
||||
struct ns_common *ns;
|
||||
struct user_namespace *mnt_userns;
|
||||
struct file *file;
|
||||
struct fd f;
|
||||
|
||||
if (!((attr->attr_set | attr->attr_clr) & MOUNT_ATTR_IDMAP))
|
||||
return 0;
|
||||
|
@ -4213,16 +4213,16 @@ static int build_mount_idmapped(const struct mount_attr *attr, size_t usize,
|
|||
if (attr->userns_fd > INT_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
file = fget(attr->userns_fd);
|
||||
if (!file)
|
||||
f = fdget(attr->userns_fd);
|
||||
if (!f.file)
|
||||
return -EBADF;
|
||||
|
||||
if (!proc_ns_file(file)) {
|
||||
if (!proc_ns_file(f.file)) {
|
||||
err = -EINVAL;
|
||||
goto out_fput;
|
||||
}
|
||||
|
||||
ns = get_proc_ns(file_inode(file));
|
||||
ns = get_proc_ns(file_inode(f.file));
|
||||
if (ns->ops->type != CLONE_NEWUSER) {
|
||||
err = -EINVAL;
|
||||
goto out_fput;
|
||||
|
@ -4251,7 +4251,7 @@ static int build_mount_idmapped(const struct mount_attr *attr, size_t usize,
|
|||
kattr->mnt_userns = get_user_ns(mnt_userns);
|
||||
|
||||
out_fput:
|
||||
fput(file);
|
||||
fdput(f);
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue