On Wed, Mar 27, 2019 at 06:21:24PM +0100, Yann Droneaud wrote:
> Le mercredi 27 mars 2019 à 17:21 +0100, Christian Brauner a écrit :
> 
> > diff --git a/kernel/pid.c b/kernel/pid.c
> > index 20881598bdfa..c9e24e726aba 100644
> > --- a/kernel/pid.c
> > +++ b/kernel/pid.c
> > @@ -26,8 +26,10 @@
> > +SYSCALL_DEFINE4(pidfd_open, pid_t, pid, int, procfd, int, pidfd,
> > unsigned int,
> > +           flags)
> > +{
> > +   long fd = -EINVAL;
> > +
> > +   if (flags & ~(PIDFD_TO_PROCFD | PROCFD_TO_PIDFD))
> > +           return -EINVAL;
> > +
> > +   if (!flags) {
> > +           struct pid *pidfd_pid;
> > +
> > +           if (pid <= 0)
> > +                   return -EINVAL;
> > +
> > +           if (procfd != -1 || pidfd != -1)
> > +                   return -EINVAL;
> > +
> > +           rcu_read_lock();
> > +           pidfd_pid = get_pid(find_pid_ns(pid, 
> > task_active_pid_ns(current)));
> > +           rcu_read_unlock();
> > +
> > +           fd = pidfd_create_fd(pidfd_pid, O_CLOEXEC);
> > +           put_pid(pidfd_pid);
> > +   } else if (flags & PIDFD_TO_PROCFD) {
> 
> [...]
> 
> > +   } else if (flags & PROCFD_TO_PIDFD) {
> > +           if (flags & ~PROCFD_TO_PIDFD)
> > +                   return -EINVAL;
> > +
> > +           if (pid != -1)
> > +                   return -EINVAL;
> > +
> > +           if (pidfd >= 0)
> > 
> 
> I think it can be stricter with:
> 
>                 if (pidfd != -1)

Yes.

> 
> (and match the check done for flag == 0).
> 
> Regards.
> 
> -- 
> Yann Droneaud
> OPTEYA
> 
> 

Reply via email to