fhandle: do_handle_open() should get FD with user flags
authorThomas Bertschinger <tahbertschinger@gmail.com>
Thu, 14 Aug 2025 23:54:28 +0000 (17:54 -0600)
committerChristian Brauner <brauner@kernel.org>
Fri, 15 Aug 2025 13:46:57 +0000 (15:46 +0200)
In f07c7cc4684a, do_handle_open() was switched to use the automatic
cleanup method for getting a FD. In that change it was also switched
to pass O_CLOEXEC unconditionally to get_unused_fd_flags() instead
of passing the user-specified flags.

I don't see anything in that commit description that indicates this was
intentional, so I am assuming it was an oversight.

With this fix, the FD will again be opened with, or without, O_CLOEXEC
according to what the user requested.

Fixes: f07c7cc4684a ("fhandle: simplify error handling")
Signed-off-by: Thomas Bertschinger <tahbertschinger@gmail.com>
Link: https://lore.kernel.org/20250814235431.995876-4-tahbertschinger@gmail.com
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/fhandle.c

index 7c236f64cdeac1d5dc10697d4863b0737a0a7e56..68a7d2861c58fe620d07276b64e1a12f3f4b1ed1 100644 (file)
@@ -402,7 +402,7 @@ static long do_handle_open(int mountdirfd, struct file_handle __user *ufh,
        if (retval)
                return retval;
 
-       CLASS(get_unused_fd, fd)(O_CLOEXEC);
+       CLASS(get_unused_fd, fd)(open_flag);
        if (fd < 0)
                return fd;