OSDN Git Service

build_mount_idmapped(): switch to fdget()
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 6 Jun 2022 04:30:50 +0000 (00:30 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 21 Apr 2023 02:55:35 +0000 (22:55 -0400)
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/namespace.c

index bc0f152..d26ea0d 100644 (file)
@@ -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;
 }