eclone: fix do_alloc_pidmap bogosity on -EAGAIN
PATCH 1/1 eclone: fix do_alloc_pidmap bogosity on -EAGAIN
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-r/[email protected]>
--- kernel/pid.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-)
kernel/pid.c +2 -3
@@ -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); }
Signature · 1 line
1.6.1