]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
pidfs: move setting flags into pidfs_alloc_file()
authorChristian Brauner <brauner@kernel.org>
Wed, 5 Mar 2025 10:08:13 +0000 (11:08 +0100)
committerChristian Brauner <brauner@kernel.org>
Wed, 5 Mar 2025 12:26:05 +0000 (13:26 +0100)
Instead od adding it into __pidfd_prepare() place it where the actual
file allocation happens and update the outdated comment.

Link: https://lore.kernel.org/r/20250305-work-pidfs-kill_on_last_close-v3-3-c8c3d8361705@kernel.org
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/pidfs.c
kernel/fork.c

index aa8c8bda8c8f0a076e0464bf254d6f780272934e..ecc0dd886714c8fe48335ce77c87d27dd0a46537 100644 (file)
@@ -696,6 +696,10 @@ struct file *pidfs_alloc_file(struct pid *pid, unsigned int flags)
                return ERR_PTR(ret);
 
        pidfd_file = dentry_open(&path, flags, current_cred());
+       /* Raise PIDFD_THREAD explicitly as do_dentry_open() strips it. */
+       if (!IS_ERR(pidfd_file))
+               pidfd_file->f_flags |= (flags & PIDFD_THREAD);
+
        path_put(&path);
        return pidfd_file;
 }
index 6230f5256bc507cf153d44cabbb002aa1207613b..8eac9cd3385b11f556d61a7de368be98dfbf725e 100644 (file)
@@ -2042,11 +2042,6 @@ static int __pidfd_prepare(struct pid *pid, unsigned int flags, struct file **re
        if (IS_ERR(pidfd_file))
                return PTR_ERR(pidfd_file);
 
-       /*
-        * anon_inode_getfile() ignores everything outside of the
-        * O_ACCMODE | O_NONBLOCK mask, set PIDFD_THREAD manually.
-        */
-       pidfd_file->f_flags |= (flags & PIDFD_THREAD);
        *ret = pidfd_file;
        return take_fd(pidfd);
 }