Unverified Commit 1e1d0f0b authored by Christian Brauner's avatar Christian Brauner
Browse files

pid: use pid_has_task() in pidfd_open()



Use the new pid_has_task() helper in pidfd_open(). This simplifies the
code and avoids taking rcu_read_{lock,unlock}() and leads to overall
nicer code.

Signed-off-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
Reviewed-by: default avatarOleg Nesterov <oleg@redhat.com>
Link: https://lore.kernel.org/r/20191017101832.5985-5-christian.brauner@ubuntu.com
parent 1722c14a
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -497,7 +497,7 @@ static int pidfd_create(struct pid *pid)
 */
SYSCALL_DEFINE2(pidfd_open, pid_t, pid, unsigned int, flags)
{
	int fd, ret;
	int fd;
	struct pid *p;

	if (flags)
@@ -510,13 +510,11 @@ SYSCALL_DEFINE2(pidfd_open, pid_t, pid, unsigned int, flags)
	if (!p)
		return -ESRCH;

	ret = 0;
	rcu_read_lock();
	if (!pid_task(p, PIDTYPE_TGID))
		ret = -EINVAL;
	rcu_read_unlock();
	if (pid_has_task(p, PIDTYPE_TGID))
		fd = pidfd_create(p);
	else
		fd = -EINVAL;

	fd = ret ?: pidfd_create(p);
	put_pid(p);
	return fd;
}