[lxc-devel] [PATCH 1/3] Use correct return when clone fails

Christian Brauner christian.brauner at mailbox.org
Mon Nov 9 20:47:27 UTC 2015


From: Christian Brauner <christianvanbrauner at gmail.com>

When the clone failed we tried to destroy the container. This will lead to a
segfault. Instead simply return -1. Also move the call to free_mnts() after the
put label to free the user specified mounts even when we just goto put.

Signed-off-by: Christian Brauner <christianvanbrauner at gmail.com>
---
 src/lxc/lxc_copy.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/lxc/lxc_copy.c b/src/lxc/lxc_copy.c
index ac1b051..1a2d007 100644
--- a/src/lxc/lxc_copy.c
+++ b/src/lxc/lxc_copy.c
@@ -388,7 +388,7 @@ static int do_clone_ephemeral(struct lxc_container *c,
 	clone = c->clone(c, my_args->newname, my_args->newpath, flags,
 			 my_args->bdevtype, NULL, my_args->fssize, args);
 	if (!clone)
-		goto err;
+		return -1;
 
 	if (!my_args->keepdata)
 		if (!clone->set_config_item(clone, "lxc.ephemeral", "1"))
@@ -439,9 +439,9 @@ static int do_clone_ephemeral(struct lxc_container *c,
 	return 0;
 
 err:
-	free_mnts(mnts, num);
 	clone->destroy(clone);
 put:
+	free_mnts(mnts, num);
 	lxc_container_put(clone);
 	return -1;
 }
-- 
2.6.2



More information about the lxc-devel mailing list