aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/namespace.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/namespace.c b/fs/namespace.c
index 5b66b2b3624d..3a1a87dc33df 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -2098,7 +2098,13 @@ static int do_remount(struct path *path, int flags, int mnt_flags,
2098 } 2098 }
2099 if ((mnt->mnt.mnt_flags & MNT_LOCK_NODEV) && 2099 if ((mnt->mnt.mnt_flags & MNT_LOCK_NODEV) &&
2100 !(mnt_flags & MNT_NODEV)) { 2100 !(mnt_flags & MNT_NODEV)) {
2101 return -EPERM; 2101 /* Was the nodev implicitly added in mount? */
2102 if ((mnt->mnt_ns->user_ns != &init_user_ns) &&
2103 !(sb->s_type->fs_flags & FS_USERNS_DEV_MOUNT)) {
2104 mnt_flags |= MNT_NODEV;
2105 } else {
2106 return -EPERM;
2107 }
2102 } 2108 }
2103 if ((mnt->mnt.mnt_flags & MNT_LOCK_NOSUID) && 2109 if ((mnt->mnt.mnt_flags & MNT_LOCK_NOSUID) &&
2104 !(mnt_flags & MNT_NOSUID)) { 2110 !(mnt_flags & MNT_NOSUID)) {