Unverified Commit b573bf6f authored by Christian Brauner's avatar Christian Brauner
Browse files

pidfd: rely on automatic cleanup in __pidfd_prepare()

parent 816b2e60
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -2032,25 +2032,23 @@ static inline void rcu_copy_process(struct task_struct *p)
 */
static int __pidfd_prepare(struct pid *pid, unsigned int flags, struct file **ret)
{
	int pidfd;
	struct file *pidfd_file;

	pidfd = get_unused_fd_flags(O_CLOEXEC);
	CLASS(get_unused_fd, pidfd)(O_CLOEXEC);
	if (pidfd < 0)
		return pidfd;

	pidfd_file = pidfs_alloc_file(pid, flags | O_RDWR);
	if (IS_ERR(pidfd_file)) {
		put_unused_fd(pidfd);
	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 pidfd;
	return take_fd(pidfd);
}

/**