From: Daan De Meyer Date: Sat, 7 Dec 2019 11:43:39 +0000 (+0100) Subject: nspawn: Only bind-mount directory when necessary. X-Git-Tag: v245-rc1~271^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5530dc87f21c283cb629702cde71f30069e69820;p=thirdparty%2Fsystemd.git nspawn: Only bind-mount directory when necessary. --- diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index b85356e1ad0..8a55ab20fa7 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -3343,13 +3343,6 @@ static int outer_child( return r; directory = "/run/systemd/nspawn-root"; - - } else if (!dissected_image) { - /* Turn directory into bind mount (we need that so that we can move the bind mount to root - * later on). */ - r = mount_verbose(LOG_ERR, directory, directory, NULL, MS_BIND|MS_REC, NULL); - if (r < 0) - return r; } r = setup_pivot_root( @@ -3377,6 +3370,13 @@ static int outer_child( if (r < 0) return r; + /* Make sure we always have a mount that we can move to root later on. */ + if (!path_is_mount_point(directory, NULL, 0)) { + r = mount_verbose(LOG_ERR, directory, directory, NULL, MS_BIND|MS_REC, NULL); + if (r < 0) + return r; + } + if (dissected_image) { /* Now we know the uid shift, let's now mount everything else that might be in the image. */ r = dissected_image_mount(dissected_image, directory, arg_uid_shift,