conf: don't accidently double-mount

Closes #3073. Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent 3c9fdb32
...@@ -1847,17 +1847,15 @@ static int mount_entry(const char *fsname, const char *target, ...@@ -1847,17 +1847,15 @@ static int mount_entry(const char *fsname, const char *target,
} }
if ((mountflags & MS_REMOUNT) || (mountflags & MS_BIND)) { if ((mountflags & MS_REMOUNT) || (mountflags & MS_BIND)) {
unsigned long rqd_flags = 0; unsigned long required_flags = 0;
DEBUG("Remounting \"%s\" on \"%s\" to respect bind or remount options", DEBUG("Remounting \"%s\" on \"%s\" to respect bind or remount options",
srcpath ? srcpath : "(none)", target ? target : "(none)"); srcpath ? srcpath : "(none)", target ? target : "(none)");
if (mountflags & MS_RDONLY) if (mountflags & MS_RDONLY)
rqd_flags |= MS_RDONLY; required_flags |= MS_RDONLY;
#ifdef HAVE_STATVFS #ifdef HAVE_STATVFS
if (srcpath && statvfs(srcpath, &sb) == 0) { if (srcpath && statvfs(srcpath, &sb) == 0) {
unsigned long required_flags = rqd_flags;
if (sb.f_flag & MS_NOSUID) if (sb.f_flag & MS_NOSUID)
required_flags |= MS_NOSUID; required_flags |= MS_NOSUID;
...@@ -1878,8 +1876,7 @@ static int mount_entry(const char *fsname, const char *target, ...@@ -1878,8 +1876,7 @@ static int mount_entry(const char *fsname, const char *target,
* mountflags, then skip the remount. * mountflags, then skip the remount.
*/ */
if (!(mountflags & MS_REMOUNT)) { if (!(mountflags & MS_REMOUNT)) {
if (!(required_flags & ~mountflags) && if (!(required_flags & ~mountflags)) {
rqd_flags == 0) {
DEBUG("Mountflags already were %lu, skipping remount", mountflags); DEBUG("Mountflags already were %lu, skipping remount", mountflags);
goto skipremount; goto skipremount;
} }
......
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