From dca0532e37e44d1703b9fc80975d45dcffb0c27d Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Mon, 9 Nov 2015 21:47:27 +0100 Subject: [PATCH] Use correct return when clone fails 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 Acked-by: Serge E. Hallyn --- 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 2ce4c9127..6336b537b 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; }