[Devel] Re: [RFC][PATCH 7/7][v2] Define clone_with_pids syscall
Oren Laadan
orenl at cs.columbia.edu
Thu May 28 16:47:24 PDT 2009
Sukadev Bhattiprolu wrote:
> Oren Laadan [orenl at cs.columbia.edu] wrote:
>
> | > +
> | > + if (num_pids < 0 || num_pids > task_pid(current)->level + 1)
> | > + return ERR_PTR(-EINVAL);
> |
> | What happens if (num_pids < task_pid(current->level) + 1) ?
> | Unless I missed something elsewhere, I suspect it will oops,
>
> Yep. the kzalloc() below this check should use:
>
> task_pid(current)->pid_ns->level+1 * sizeof(pid_t)
>
> | because in patch #4, you had:
> |
> | for (i = ns->level; i >= 0; i--) {
> | - nr = alloc_pidmap(tmp, 0);
> | + tpid = 0;
> | + if (target_pids)
> | + tpid = target_pids[i];
> | +
> | + nr = alloc_pidmap(tmp, tpid);
> | if (nr < 0)
> | goto out_free;
> |
> | In general, can a task figure out it's depth in the pid-ns hierarchy ?
> |
> | I'm thinking of a case in which a checkpoint was taken of a (flat)
> | container which is in depth 2 of the global hierarchy, and then it
> | is restarted in depth 3, or in depth 1.
> |
> | Perhaps the semantics of the syscall should be that target_pids will
> | indicate the desired pids _from the bottom up_. A value of "0" means
>
> Hmm, I thought bottom up would be confusing, but I guess that would
> work better :-) Will fix and resend.
(Repeating...)
Perhaps bottom-up is a misleading: I don't care about the order...
I meant that a N size array should affect the last N levels of
the hierarchy (if it is deeper than N).
You could actually keep everything else as is, and change the code
that copies from user to always allocate a ns->level+1 size array,
and copy the user data to the end of it, zeroing the beginning.
Oren.
>
> | "don't care" and let the kernel assign. The remaining levels (upwards)
> | will be treated as zeros.
> |
> | [...]
> |
> | Oren.
> |
>
_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers
More information about the Devel
mailing list