Commit ee1b16bc by Tycho Andersen

fix userns helper error handling

In both of these cases if there is actually an error, we won't close the pipe and the api call will hang. Instead, let's be sure to close the pipe before waiting, so that it doesn't hang. Signed-off-by: 's avatarTycho Andersen <tycho@tycho.ws>
parent 2df70fba
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment