On 09/02, Christian Brauner wrote:
>
> -static int pidfd_create(struct pid *pid)
> +static int pidfd_create(struct pid *pid, unsigned int flags)
>  {
>       int fd;
>  
>       fd = anon_inode_getfd("[pidfd]", &pidfd_fops, get_pid(pid),
> -                           O_RDWR | O_CLOEXEC);
> +                           flags | O_RDWR | O_CLOEXEC);
>       if (fd < 0)
>               put_pid(pid);
>  
> @@ -565,7 +567,7 @@ SYSCALL_DEFINE2(pidfd_open, pid_t, pid, unsigned int, 
> flags)
>       int fd;
>       struct pid *p;
>  
> -     if (flags)
> +     if (flags & ~PIDFD_NONBLOCK)
>               return -EINVAL;
>  
>       if (pid <= 0)
> @@ -576,7 +578,7 @@ SYSCALL_DEFINE2(pidfd_open, pid_t, pid, unsigned int, 
> flags)
>               return -ESRCH;
>  
>       if (pid_has_task(p, PIDTYPE_TGID))
> -             fd = pidfd_create(p);
> +             fd = pidfd_create(p, flags);
>       else
>               fd = -EINVAL;
>  

Reviewed-by: Oleg Nesterov <[email protected]>

Reply via email to