Commit a4c2b660 authored by Eric W. Biederman's avatar Eric W. Biederman Committed by Jiri Slaby

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

commit 3e186641 upstream.

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>
Signed-off-by: default avatar"Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
parent f7c68a1a
...@@ -1858,8 +1858,14 @@ static int do_remount(struct path *path, int flags, int mnt_flags, ...@@ -1858,8 +1858,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