]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
Exit on errors in restore()'s worker
authorTycho Andersen <tycho.andersen@canonical.com>
Tue, 2 Sep 2014 23:37:04 +0000 (18:37 -0500)
committerStéphane Graber <stgraber@ubuntu.com>
Fri, 19 Sep 2014 21:00:16 +0000 (17:00 -0400)
If we just return here, we end up with two processes executing the caller's
code, which is not good.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/lxc/lxccontainer.c

index dca0c5dad2e606e7d7916446dd81df5ebf3ff825..cbe58ee08a8ed1af550012ffed4e3e53c2116b9c 100644 (file)
@@ -3830,7 +3830,7 @@ static bool lxcapi_restore(struct lxc_container *c, char *directory, bool verbos
                struct criu_opts os;
 
                if (unshare(CLONE_NEWNS))
-                       return false;
+                       exit(1);
 
                /* CRIU needs the lxc root bind mounted so that it is the root of some
                 * mount. */
@@ -3838,15 +3838,15 @@ static bool lxcapi_restore(struct lxc_container *c, char *directory, bool verbos
 
                if (rootfs_is_blockdev(c->lxc_conf)) {
                        if (do_rootfs_setup(c->lxc_conf, c->name, c->config_path) < 0)
-                               return false;
+                               exit(1);
                }
                else {
                        if (mkdir(rootfs->mount, 0755) < 0 && errno != EEXIST)
-                               return false;
+                               exit(1);
 
                        if (mount(rootfs->path, rootfs->mount, NULL, MS_BIND, NULL) < 0) {
                                rmdir(rootfs->mount);
-                               return false;
+                               exit(1);
                        }
                }