Re: [PATCH 2/4] clone: add CLONE_PIDFD

From: Oleg Nesterov
Date: Mon Apr 15 2019 - 06:52:16 EST


On 04/14, Christian Brauner wrote:
>
> @@ -2260,6 +2363,10 @@ long _do_fork(unsigned long clone_flags,
> }
>
> put_pid(pid);
> +
> + if (clone_flags & CLONE_PIDFD)
> + nr = pidfd;
> +

Well, this doesn't look nice ...

CLONE_PARENT_SETTID doesn't look very usefule, so what if we add

if ((clone_flags & (CLONE_PIDFD|CLONE_PARENT_SETTID)) ==
(CLONE_PIDFD|CLONE_PARENT_SETTID))
return ERR_PTR(-EINVAL);

at the start of copy_process() ?

Then it can do

if (clone_flags & CLONE_PIDFD) {
retval = pidfd_create(pid, &pidfdf);
if (retval < 0)
goto bad_fork_free_pid;
retval = put_user(retval, parent_tidptr)
if (retval < 0)
goto bad_fork_free_pid;
}

Oleg.