Commit 3e186641 authored by Eric W. Biederman's avatar Eric W. Biederman

mnt: Implicitly add MNT_NODEV on remount when it was implicitly added by mount

Now that remount is properly enforcing the rule that you can't remove
nodev at least sandstorm.io is breaking when performing a remount.

It turns out that there is an easy intuitive solution implicitly
add nodev on remount when nodev was implicitly added on mount.
Tested-by: default avatarCedric Bosdonnat <cbosdonnat@suse.com>
Tested-by: default avatarRichard Weinberger <richard@nod.at>
Cc: stable@vger.kernel.org
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
parent 5d01410f
...@@ -2098,8 +2098,14 @@ static int do_remount(struct path *path, int flags, int mnt_flags, ...@@ -2098,8 +2098,14 @@ static int do_remount(struct path *path, int flags, int mnt_flags,
} }
if ((mnt->mnt.mnt_flags & MNT_LOCK_NODEV) && if ((mnt->mnt.mnt_flags & MNT_LOCK_NODEV) &&
!(mnt_flags & MNT_NODEV)) { !(mnt_flags & MNT_NODEV)) {
/* Was the nodev implicitly added in mount? */
if ((mnt->mnt_ns->user_ns != &init_user_ns) &&
!(sb->s_type->fs_flags & FS_USERNS_DEV_MOUNT)) {
mnt_flags |= MNT_NODEV;
} else {
return -EPERM; return -EPERM;
} }
}
if ((mnt->mnt.mnt_flags & MNT_LOCK_NOSUID) && if ((mnt->mnt.mnt_flags & MNT_LOCK_NOSUID) &&
!(mnt_flags & MNT_NOSUID)) { !(mnt_flags & MNT_NOSUID)) {
return -EPERM; return -EPERM;
......
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