Skip to contentSkip to conversation

eclone: fix do_alloc_pidmap bogosity on -EAGAIN

PATCH New Serge E. Hallyn 1 participant 1 message Nov 13, 2009

lore
Share & tools
lore
#0 lore raw

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)

---
 kernel/pid.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)
kernel/pid.c +2 -3
index 3ee52cd..8ad7b04 100644
@@ -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