jail: fix false return in case of nofail mount
authorDaniel Golle <daniel@makrotopia.org>
Mon, 13 Jul 2020 23:40:20 +0000 (00:40 +0100)
committerDaniel Golle <daniel@makrotopia.org>
Mon, 13 Jul 2020 23:40:20 +0000 (00:40 +0100)
In some cases mounts could still fail eventhough 'nofail' was set.
Make sure to always return successfull also in those cases.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
jail/fs.c

index 3f090dd8e1940baa75f989b43b7528e8227c118d..05f1fa779b5def416e90af68995eca68515d9817 100644 (file)
--- a/jail/fs.c
+++ b/jail/fs.c
@@ -98,7 +98,7 @@ static int do_mount(const char *root, const char *source, const char *target, co
                fd = creat(new, 0644);
                if (fd == -1) {
                        ERROR("creat(%s) failed: %m\n", new);
-                       return -1;
+                       return error;
                }
                close(fd);
        }
@@ -106,13 +106,14 @@ static int do_mount(const char *root, const char *source, const char *target, co
        if (mountflags & MS_BIND) {
                if (mount(source, new, filesystemtype, MS_BIND, optstr)) {
                        ERROR("failed to mount -B %s %s: %m\n", source, new);
+                       return error;
                }
                mountflags |= MS_REMOUNT;
        }
 
        if (mount(source, new, filesystemtype, mountflags, optstr)) {
                ERROR("failed to mount %s %s: %m\n", source, new);
-               return -1;
+               return error;
        }
 
        DEBUG("mount %s%s %s (%s)\n", (mountflags & MS_BIND)?"-B ":"", source, new,