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

index 1d109c1acf211b3c3c777ffda539a8089a0b7536..2a6614b7c4eab011f3cba8f3e7dc7eec0c8acc08 100644 (file)
@@ -470,9 +470,9 @@ SYSCALL_DEFINE2(memfd_create,
                const char __user *, uname,
                unsigned int, flags)
 {
-       struct file *file;
-       int fd, error;
-       char *name;
+       char *name __free(kfree) = NULL;
+       unsigned int fd_flags;
+       int error;
 
        error = sanitize_flags(&flags);
        if (error < 0)
@@ -482,25 +482,6 @@ SYSCALL_DEFINE2(memfd_create,
        if (IS_ERR(name))
                return PTR_ERR(name);
 
-       fd = get_unused_fd_flags((flags & MFD_CLOEXEC) ? O_CLOEXEC : 0);
-       if (fd < 0) {
-               error = fd;
-               goto err_free_name;
-       }
-
-       file = alloc_file(name, flags);
-       if (IS_ERR(file)) {
-               error = PTR_ERR(file);
-               goto err_free_fd;
-       }
-
-       fd_install(fd, file);
-       kfree(name);
-       return fd;
-
-err_free_fd:
-       put_unused_fd(fd);
-err_free_name:
-       kfree(name);
-       return error;
+       fd_flags = (flags & MFD_CLOEXEC) ? O_CLOEXEC : 0;
+       return FD_ADD(fd_flags, alloc_file(name, flags));
 }