]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
file.c: merge __{set,clear}_close_on_exec()
authorAl Viro <viro@zeniv.linux.org.uk>
Wed, 14 Aug 2024 04:41:24 +0000 (00:41 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 7 Oct 2024 17:34:41 +0000 (13:34 -0400)
they are always go in pairs; seeing that they are inlined, might
as well make that a single inline function taking a boolean
argument ("do we want close_on_exec set for that descriptor")

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/file.c

index 7e5e9803a1731bb564179b1465b8eb185ae9d416..d8fccd4796a95a3c752d6f806aac11dd8560b92d 100644 (file)
--- a/fs/file.c
+++ b/fs/file.c
@@ -237,15 +237,15 @@ repeat:
        return expanded;
 }
 
-static inline void __set_close_on_exec(unsigned int fd, struct fdtable *fdt)
+static inline void __set_close_on_exec(unsigned int fd, struct fdtable *fdt,
+                                      bool set)
 {
-       __set_bit(fd, fdt->close_on_exec);
-}
-
-static inline void __clear_close_on_exec(unsigned int fd, struct fdtable *fdt)
-{
-       if (test_bit(fd, fdt->close_on_exec))
-               __clear_bit(fd, fdt->close_on_exec);
+       if (set) {
+               __set_bit(fd, fdt->close_on_exec);
+       } else {
+               if (test_bit(fd, fdt->close_on_exec))
+                       __clear_bit(fd, fdt->close_on_exec);
+       }
 }
 
 static inline void __set_open_fd(unsigned int fd, struct fdtable *fdt)
@@ -518,10 +518,7 @@ repeat:
                files->next_fd = fd + 1;
 
        __set_open_fd(fd, fdt);
-       if (flags & O_CLOEXEC)
-               __set_close_on_exec(fd, fdt);
-       else
-               __clear_close_on_exec(fd, fdt);
+       __set_close_on_exec(fd, fdt, flags & O_CLOEXEC);
        error = fd;
 
 out:
@@ -1147,13 +1144,8 @@ void __f_unlock_pos(struct file *f)
 void set_close_on_exec(unsigned int fd, int flag)
 {
        struct files_struct *files = current->files;
-       struct fdtable *fdt;
        spin_lock(&files->file_lock);
-       fdt = files_fdtable(files);
-       if (flag)
-               __set_close_on_exec(fd, fdt);
-       else
-               __clear_close_on_exec(fd, fdt);
+       __set_close_on_exec(fd, files_fdtable(files), flag);
        spin_unlock(&files->file_lock);
 }
 
@@ -1195,10 +1187,7 @@ __releases(&files->file_lock)
        get_file(file);
        rcu_assign_pointer(fdt->fd[fd], file);
        __set_open_fd(fd, fdt);
-       if (flags & O_CLOEXEC)
-               __set_close_on_exec(fd, fdt);
-       else
-               __clear_close_on_exec(fd, fdt);
+       __set_close_on_exec(fd, fdt, flags & O_CLOEXEC);
        spin_unlock(&files->file_lock);
 
        if (tofree)