diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 1035c6fef..7d2efa209 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -4003,14 +4003,14 @@ int userns_exec_1(struct lxc_conf *conf, int (*fn)(void *), void *data, } on_error: - /* Wait for child to finish. */ - if (pid > 0) - status = wait_for_pid(pid); - if (p[0] != -1) close(p[0]); close(p[1]); + /* Wait for child to finish. */ + if (pid > 0) + status = wait_for_pid(pid); + if (status < 0) ret = -1; @@ -4178,6 +4178,10 @@ int userns_exec_full(struct lxc_conf *conf, int (*fn)(void *), void *data, } on_error: + if (p[0] != -1) + close(p[0]); + close(p[1]); + /* Wait for child to finish. */ if (pid > 0) ret = wait_for_pid(pid); @@ -4189,10 +4193,6 @@ on_error: if (host_gid_map && (host_gid_map != container_root_gid)) free(host_gid_map); - if (p[0] != -1) - close(p[0]); - close(p[1]); - return ret; }