[lxc-devel] [lxc/master] bugfixes
brauner on Github
lxc-bot at linuxcontainers.org
Sun Jul 29 21:12:54 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180729/b3be0233/attachment.bin>
-------------- next part --------------
From 10dae10520fea5b479d1e73eb477c857b10fdc37 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sun, 29 Jul 2018 22:59:37 +0200
Subject: [PATCH 1/6] cmd: s/pipe()/pipe2()/g
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/cmd/lxc_usernsexec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lxc/cmd/lxc_usernsexec.c b/src/lxc/cmd/lxc_usernsexec.c
index 1426eed5d..427721ad8 100644
--- a/src/lxc/cmd/lxc_usernsexec.c
+++ b/src/lxc/cmd/lxc_usernsexec.c
@@ -360,7 +360,7 @@ int main(int argc, char *argv[])
if (argc < 1)
argv = default_args;
- if (pipe(pipe1) < 0 || pipe(pipe2) < 0) {
+ if (pipe2(pipe1, O_CLOEXEC) < 0 || pipe2(pipe2, O_CLOEXEC) < 0) {
perror("pipe");
exit(EXIT_FAILURE);
}
From 5ea8cead29703daff461f671e07bc2d911b8e75a Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sun, 29 Jul 2018 23:02:14 +0200
Subject: [PATCH 2/6] conf: s/pipe()/pipe2()/g
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/conf.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index ff9bd091b..e55c40bf2 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -4359,7 +4359,7 @@ int userns_exec_1(struct lxc_conf *conf, int (*fn)(void *), void *data,
if (!idmap)
return -1;
- ret = pipe(p);
+ ret = pipe2(p, O_CLOEXEC);
if (ret < 0) {
SYSERROR("Failed to create pipe");
return -1;
@@ -4441,7 +4441,7 @@ int userns_exec_full(struct lxc_conf *conf, int (*fn)(void *), void *data,
if (!conf)
return -EINVAL;
- ret = pipe(p);
+ ret = pipe2(p, O_CLOEXEC);
if (ret < 0) {
SYSERROR("opening pipe");
return -1;
From ac376979c5a6cbf7aed5ca0ed0aa3b53ecee614f Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sun, 29 Jul 2018 23:03:32 +0200
Subject: [PATCH 3/6] conf: always close pipe in run_userns_fn()
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/conf.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index e55c40bf2..f4a95be79 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -4121,6 +4121,7 @@ struct userns_fn_data {
static int run_userns_fn(void *data)
{
+ int ret;
char c;
struct userns_fn_data *d = data;
@@ -4130,14 +4131,14 @@ static int run_userns_fn(void *data)
/* Wait for parent to finish establishing a new mapping in the user
* namespace we are executing in.
*/
- if (lxc_read_nointr(d->p[0], &c, 1) != 1)
- return -1;
-
+ ret = lxc_read_nointr(d->p[0], &c, 1);
/* Close read end of the pipe. */
close(d->p[0]);
+ if (ret != 1)
+ return -1;
if (d->fn_name)
- TRACE("calling function \"%s\"", d->fn_name);
+ TRACE("Calling function \"%s\"", d->fn_name);
/* Call function to run. */
return d->fn(d->arg);
From e558f94e14c481aa3a3fd68059197255ff65f392 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sun, 29 Jul 2018 23:07:33 +0200
Subject: [PATCH 4/6] criu: s/pipe()/pipe2()/
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/criu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/lxc/criu.c b/src/lxc/criu.c
index 64ea4f024..ac4805aa6 100644
--- a/src/lxc/criu.c
+++ b/src/lxc/criu.c
@@ -988,7 +988,7 @@ static void do_restore(struct lxc_container *c, int status_pipe, struct migrate_
goto out_fini_handler;
}
- if (pipe(pipes) < 0) {
+ if (pipe2(pipes, O_CLOEXEC) < 0) {
SYSERROR("pipe() failed");
goto out_fini_handler;
}
From 2d30d32034c8e9719f6b98449888fad0191a1fe9 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sun, 29 Jul 2018 23:09:13 +0200
Subject: [PATCH 5/6] lxccontainer: cleanup do_lxcapi_get_interfaces()
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/lxccontainer.c | 28 +++++++++++++---------------
1 file changed, 13 insertions(+), 15 deletions(-)
diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index c5b515f60..98e260cfd 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -2292,21 +2292,19 @@ static bool remove_from_array(char ***names, char *cname, int size)
return false;
}
-static char ** do_lxcapi_get_interfaces(struct lxc_container *c)
+static char **do_lxcapi_get_interfaces(struct lxc_container *c)
{
pid_t pid;
int i, count = 0, pipefd[2];
char **interfaces = NULL;
char interface[IFNAMSIZ];
- if(pipe(pipefd) < 0) {
- SYSERROR("pipe failed");
+ if (pipe(pipefd) < 0)
return NULL;
- }
pid = fork();
if (pid < 0) {
- SYSERROR("failed to fork task to get interfaces information");
+ SYSERROR("Failed to fork task to get interfaces information");
close(pipefd[0]);
close(pipefd[1]);
return NULL;
@@ -2320,23 +2318,23 @@ static char ** do_lxcapi_get_interfaces(struct lxc_container *c)
close(pipefd[0]);
if (!enter_net_ns(c)) {
- SYSERROR("failed to enter namespace");
+ SYSERROR("Failed to enter network namespace");
goto out;
}
/* Grab the list of interfaces */
if (getifaddrs(&interfaceArray)) {
- SYSERROR("failed to get interfaces list");
+ SYSERROR("Failed to get interfaces list");
goto out;
}
/* Iterate through the interfaces */
- for (tempIfAddr = interfaceArray; tempIfAddr != NULL; tempIfAddr = tempIfAddr->ifa_next) {
+ for (tempIfAddr = interfaceArray; tempIfAddr != NULL;
+ tempIfAddr = tempIfAddr->ifa_next) {
nbytes = write(pipefd[1], tempIfAddr->ifa_name, IFNAMSIZ);
- if (nbytes < 0) {
- ERROR("write failed");
+ if (nbytes < 0)
goto out;
- }
+
count++;
}
@@ -2358,16 +2356,16 @@ static char ** do_lxcapi_get_interfaces(struct lxc_container *c)
interface[IFNAMSIZ - 1] = '\0';
if (array_contains(&interfaces, interface, count))
- continue;
+ continue;
- if(!add_to_array(&interfaces, interface, count))
+ if (!add_to_array(&interfaces, interface, count))
ERROR("Failed to add \"%s\" to array", interface);
count++;
}
if (wait_for_pid(pid) != 0) {
- for(i=0;i<count;i++)
+ for (i = 0; i < count; i++)
free(interfaces[i]);
free(interfaces);
@@ -2378,7 +2376,7 @@ static char ** do_lxcapi_get_interfaces(struct lxc_container *c)
close(pipefd[0]);
/* Append NULL to the array */
- if(interfaces)
+ if (interfaces)
interfaces = (char **)lxc_append_null_to_array((void **)interfaces, count);
return interfaces;
From 7ae732186b1565a5912a83f5988f8a85128439d2 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sun, 29 Jul 2018 23:09:45 +0200
Subject: [PATCH 6/6] lxccontainer: s/pipe()/pipe2()/g
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/lxccontainer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/lxc/lxccontainer.c b/src/lxc/lxccontainer.c
index 98e260cfd..5912a76ba 100644
--- a/src/lxc/lxccontainer.c
+++ b/src/lxc/lxccontainer.c
@@ -2299,7 +2299,7 @@ static char **do_lxcapi_get_interfaces(struct lxc_container *c)
char **interfaces = NULL;
char interface[IFNAMSIZ];
- if (pipe(pipefd) < 0)
+ if (pipe2(pipefd, O_CLOEXEC) < 0)
return NULL;
pid = fork();
@@ -2394,7 +2394,7 @@ static char **do_lxcapi_get_ips(struct lxc_container *c, const char *interface,
int count = 0;
char **addresses = NULL;
- ret = pipe(pipefd);
+ ret = pipe2(pipefd, O_CLOEXEC);
if (ret < 0) {
SYSERROR("Failed to create pipe");
return NULL;
More information about the lxc-devel
mailing list