Re: [PATCH v10 1/2] fork: extend clone3() to support setting a PID

From: Oleg Nesterov
Date: Fri Nov 15 2019 - 04:34:32 EST


On 11/14, Andrei Vagin wrote:
>
> On Thu, Nov 14, 2019 at 03:27:06PM +0100, Adrian Reber wrote:
> ...
> > diff --git a/include/uapi/linux/sched.h b/include/uapi/linux/sched.h
> > index 1d500ed03c63..2e649cfa07f4 100644
> > --- a/include/uapi/linux/sched.h
> > +++ b/include/uapi/linux/sched.h
> ...
> > @@ -174,24 +186,51 @@ struct pid *alloc_pid(struct pid_namespace *ns)
> > pid->level = ns->level;
> >
> > for (i = ns->level; i >= 0; i--) {
> > - int pid_min = 1;
> > + int tid = 0;
> > +
> > + if (set_tid_size) {
> > + tid = set_tid[ns->level - i];
> > + if (tid < 1 || tid >= pid_max)
> > + return ERR_PTR(-EINVAL);
>
> do we need to release pids what have been allocated on previous levels?

Heh ;) it is really amazing that nobody noticed this! Thanks Andrei.

> nr = -EINVAL;

retval = -EINVAL;

> goto out_free;

Oleg.