conf: don't accidently double-mount

Closes #3073.
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
This commit is contained in:
Christian Brauner 2020-03-19 13:11:03 +01:00
parent 3c9fdb32fc
commit f759178580
No known key found for this signature in database
GPG Key ID: 8EB056D53EECB12D

View File

@ -1847,17 +1847,15 @@ static int mount_entry(const char *fsname, const char *target,
}
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",
srcpath ? srcpath : "(none)", target ? target : "(none)");
if (mountflags & MS_RDONLY)
rqd_flags |= MS_RDONLY;
required_flags |= MS_RDONLY;
#ifdef HAVE_STATVFS
if (srcpath && statvfs(srcpath, &sb) == 0) {
unsigned long required_flags = rqd_flags;
if (sb.f_flag & MS_NOSUID)
required_flags |= MS_NOSUID;
@ -1878,8 +1876,7 @@ static int mount_entry(const char *fsname, const char *target,
* mountflags, then skip the remount.
*/
if (!(mountflags & MS_REMOUNT)) {
if (!(required_flags & ~mountflags) &&
rqd_flags == 0) {
if (!(required_flags & ~mountflags)) {
DEBUG("Mountflags already were %lu, skipping remount", mountflags);
goto skipremount;
}