libcontainer: handle EINTR from minijail_wait

minijail_wait will pass EINTR up if the call to waitpid is interrupted.
Handle that return in libcontainer.

BUG=none
TEST=start and stop containers, didn't simulate EINTER being returned.

Change-Id: I5c20e9e225baee5794c6683fc2832b1357ad1a95
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/340373
Reviewed-by: Ricky Zhou <rickyz@chromium.org>
diff --git a/libcontainer/libcontainer.c b/libcontainer/libcontainer.c
index 58c79be..c11017c 100644
--- a/libcontainer/libcontainer.c
+++ b/libcontainer/libcontainer.c
@@ -650,8 +650,15 @@
 
 int container_wait(struct container *c)
 {
-	minijail_wait(c->jail);
-	return container_teardown(c);
+	int rc;
+
+	do {
+		rc = minijail_wait(c->jail);
+	} while (rc == -1 && errno == EINTR);
+
+	if (rc == 0)
+		rc = container_teardown(c);
+	return rc;
 }
 
 int container_kill(struct container *c)