Commit dca0532e by Christian Brauner Committed by Stéphane Graber

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: 's avatarChristian Brauner <christianvanbrauner@gmail.com> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent 2b47bac3
...@@ -388,7 +388,7 @@ static int do_clone_ephemeral(struct lxc_container *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, clone = c->clone(c, my_args->newname, my_args->newpath, flags,
my_args->bdevtype, NULL, my_args->fssize, args); my_args->bdevtype, NULL, my_args->fssize, args);
if (!clone) if (!clone)
goto err; return -1;
if (!my_args->keepdata) if (!my_args->keepdata)
if (!clone->set_config_item(clone, "lxc.ephemeral", "1")) if (!clone->set_config_item(clone, "lxc.ephemeral", "1"))
...@@ -439,9 +439,9 @@ static int do_clone_ephemeral(struct lxc_container *c, ...@@ -439,9 +439,9 @@ static int do_clone_ephemeral(struct lxc_container *c,
return 0; return 0;
err: err:
free_mnts(mnts, num);
clone->destroy(clone); clone->destroy(clone);
put: put:
free_mnts(mnts, num);
lxc_container_put(clone); lxc_container_put(clone);
return -1; return -1;
} }
......
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