From: Tobin C. Harding Date: Wed, 15 Aug 2018 23:43:02 +0000 (+1000) Subject: usernsexec: Make err out vebose for unshare error X-Git-Tag: lxc-3.1.0~159^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ede912b440c579da4653ac9ded6d292b80e19f06;p=thirdparty%2Flxc.git usernsexec: Make err out vebose for unshare error Currently if lxc-usernsexec is run on a kernel without user namespaces enabled the error message is unshare: Invalid argument read pipe: Success This error message 'Invalid argument' does not point at the root cause of the error. We can help the user out by giving a more detailed error message and also not using perror() if errno==0. Improve error message by - Printing unshare flags - Printing suggested cause of failure (user namespace not enabled) - Print error message with fprintf() if errno==0 (EOF) Signed-off-by: Tobin C. Harding --- diff --git a/src/lxc/cmd/lxc_usernsexec.c b/src/lxc/cmd/lxc_usernsexec.c index c342a90a0..107668273 100644 --- a/src/lxc/cmd/lxc_usernsexec.c +++ b/src/lxc/cmd/lxc_usernsexec.c @@ -375,7 +375,8 @@ int main(int argc, char *argv[]) ret = unshare(flags); if (ret < 0) { - perror("unshare"); + fprintf(stderr, + "Failed to unshare mount and user namespace\n"); return 1; } buf[0] = '1'; @@ -399,9 +400,13 @@ int main(int argc, char *argv[]) close(pipe_fds1[1]); close(pipe_fds2[0]); - if (lxc_read_nointr(pipe_fds1[0], buf, 1) < 1) { + ret = lxc_read_nointr(pipe_fds1[0], buf, 1); + if (ret < 0) { perror("read pipe"); exit(EXIT_FAILURE); + } else if (ret == 0) { + fprintf(stderr, "Failed to read from pipe\n"); + exit(EXIT_FAILURE); } buf[0] = '1';