do_alloc_pidmap must not return 0 if it failed to find a pid. Without this patch, doing eclone and choosing a pid which is in use results in a massive chain of oopses. (This applies on top of the v13 eclone patchset) Signed-off-by: Serge E. Hallyn <serue@xxxxxxxxxx> --- kernel/pid.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/pid.c b/kernel/pid.c index 3ee52cd..8ad7b04 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -164,6 +164,7 @@ static int do_alloc_pidmap(struct pid_namespace *pid_ns, int last, int min, rc = alloc_pidmap_page(map); if (rc) break; + rc = -EAGAIN; if (likely(atomic_read(&map->nr_free))) { do { @@ -189,10 +190,8 @@ static int do_alloc_pidmap(struct pid_namespace *pid_ns, int last, int min, } else { map = &pid_ns->pidmap[0]; offset = min; - if (unlikely(last == offset)) { - rc = -EAGAIN; + if (unlikely(last == offset)) break; - } } pid = mk_pid(pid_ns, map, offset); } -- 1.6.1 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers