Commit 37c3dfc9 sets the wait status on only the child pid. It
intended to match the pid only once to protect against pid reuse but it
won't because the indicator was reset to 0 every time at the top of the
loop. If the child pid is reused, the wait status will be set again.
Fix by setting indicator outside the loop.

Signed-off-by: Dwight Engen <dwight.en...@oracle.com>
---
 src/lxc/lxc_init.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c
index 5693da5..c83c2f1 100644
--- a/src/lxc/lxc_init.c
+++ b/src/lxc/lxc_init.c
@@ -63,7 +63,7 @@ int main(int argc, char *argv[])
        int err = -1;
        char **aargv;
        sigset_t mask, omask;
-       int i, shutdown = 0;
+       int i, have_status = 0, shutdown = 0;
 
        while (1) {
                int ret = getopt_long_only(argc, argv, "", options, NULL);
@@ -162,7 +162,6 @@ int main(int argc, char *argv[])
        err = 0;
        for (;;) {
                int status;
-               int orphan = 0;
                pid_t waited_pid;
 
                switch (was_interrupted) {
@@ -209,10 +208,10 @@ int main(int argc, char *argv[])
                 * (not wrapped pid) and continue to wait for
                 * the end of the orphan group.
                 */
-               if ((waited_pid != pid) || (orphan ==1))
-                       continue;
-               orphan = 1;
-               err = lxc_error_set_and_log(waited_pid, status);
+               if (waited_pid == pid && !have_status) {
+                       err = lxc_error_set_and_log(waited_pid, status);
+                       have_status = 1;
+               }
        }
 out:
        return err;
-- 
1.7.12.3


------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to