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

From: Andrei Vagin
Date: Thu Nov 14 2019 - 14:15:44 EST


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?

nr = -EINVAL;
goto out_free;

Could you add a test for this case?