[PATCH 2/3] [HERE BE DRAGONS - DRAFT - __UNTESTED__] fork: use pidfd_file_create()

From: Christian Brauner
Date: Wed Mar 22 2023 - 10:59:54 EST


Signed-off-by: Christian Brauner <brauner@xxxxxxxxxx>
---
kernel/fork.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/kernel/fork.c b/kernel/fork.c
index f68954d05e89..c8dc78ee0a74 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -2296,20 +2296,11 @@ static __latent_entropy struct task_struct *copy_process(
* if the fd table isn't shared).
*/
if (clone_flags & CLONE_PIDFD) {
- retval = get_unused_fd_flags(O_RDWR | O_CLOEXEC);
- if (retval < 0)
- goto bad_fork_free_pid;
-
- pidfd = retval;
-
- pidfile = anon_inode_getfile("[pidfd]", &pidfd_fops, pid,
- O_RDWR | O_CLOEXEC);
+ pidfile = pidfd_file_create(pid, O_RDWR | O_CLOEXEC, &pidfd);
if (IS_ERR(pidfile)) {
- put_unused_fd(pidfd);
retval = PTR_ERR(pidfile);
goto bad_fork_free_pid;
}
- get_pid(pid); /* held by pidfile now */

retval = put_user(pidfd, args->pidfd);
if (retval)
--
2.34.1