]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fhandle: convert do_handle_open() to FD_ADD()
authorChristian Brauner <brauner@kernel.org>
Sun, 23 Nov 2025 16:33:22 +0000 (17:33 +0100)
committerChristian Brauner <brauner@kernel.org>
Fri, 28 Nov 2025 11:42:31 +0000 (12:42 +0100)
Link: https://patch.msgid.link/20251123-work-fd-prepare-v4-4-b6efa1706cfd@kernel.org
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/fhandle.c

index 052f9c9368fbb1ad3fd588404a312fc5fa5c8f18..3de1547ec9d4198cb3b35a4e7c691035dbc97550 100644 (file)
@@ -404,32 +404,28 @@ out_path:
        return retval;
 }
 
+static struct file *file_open_handle(struct path *path, int open_flag)
+{
+       const struct export_operations *eops;
+
+       eops = path->mnt->mnt_sb->s_export_op;
+       if (eops->open)
+               return eops->open(path, open_flag);
+
+       return file_open_root(path, "", open_flag, 0);
+}
+
 static long do_handle_open(int mountdirfd, struct file_handle __user *ufh,
                           int open_flag)
 {
-       long retval = 0;
+       long retval;
        struct path path __free(path_put) = {};
-       struct file *file;
-       const struct export_operations *eops;
 
        retval = handle_to_path(mountdirfd, ufh, &path, open_flag);
        if (retval)
                return retval;
 
-       CLASS(get_unused_fd, fd)(open_flag);
-       if (fd < 0)
-               return fd;
-
-       eops = path.mnt->mnt_sb->s_export_op;
-       if (eops->open)
-               file = eops->open(&path, open_flag);
-       else
-               file = file_open_root(&path, "", open_flag, 0);
-       if (IS_ERR(file))
-               return PTR_ERR(file);
-
-       fd_install(fd, file);
-       return take_fd(fd);
+       return FD_ADD(open_flag, file_open_handle(&path, open_flag));
 }
 
 /**