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

index 3d64372ecc675e4795eb0a0deda10f8f67b95640..0ccd086323fd1ae82d4e879f3ff4af15da949272 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -1421,8 +1421,8 @@ static int do_sys_openat2(int dfd, const char __user *filename,
                          struct open_how *how)
 {
        struct open_flags op;
-       struct filename *tmp;
-       int err, fd;
+       struct filename *tmp __free(putname) = NULL;
+       int err;
 
        err = build_open_flags(how, &op);
        if (unlikely(err))
@@ -1432,18 +1432,7 @@ static int do_sys_openat2(int dfd, const char __user *filename,
        if (IS_ERR(tmp))
                return PTR_ERR(tmp);
 
-       fd = get_unused_fd_flags(how->flags);
-       if (likely(fd >= 0)) {
-               struct file *f = do_filp_open(dfd, tmp, &op);
-               if (IS_ERR(f)) {
-                       put_unused_fd(fd);
-                       fd = PTR_ERR(f);
-               } else {
-                       fd_install(fd, f);
-               }
-       }
-       putname(tmp);
-       return fd;
+       return FD_ADD(how->flags, do_filp_open(dfd, tmp, &op));
 }
 
 int do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)