Re: [PATCH v2 1/4] pidfd: support PIDFD_NONBLOCK in pidfd_open()

From: Oleg Nesterov
Date: Thu Sep 03 2020 - 10:34:01 EST


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 <oleg@xxxxxxxxxx>