summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-07-05 05:21:36 +0300
committerLinus Torvalds <torvalds@linux-foundation.org>2019-07-05 05:21:36 +0300
commit2cd7cdc7e420a343743db781484e801fd784a1f1 (patch)
tree905bc14c6cd00ba92a56ee8ab5cb809451bb5d06
parentc212ddaee2fd21e8d756dbc3c6119e3259b38fd0 (diff)
parent570d7a98e7d6d5d8706d94ffd2d40adeaa318332 (diff)
downloadlinux-2cd7cdc7e420a343743db781484e801fd784a1f1.tar.xz
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull do_move_mount() fix from Al Viro: "Regression fix" * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: vfs: move_mount: reject moving kernel internal mounts
-rw-r--r--fs/namespace.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/namespace.c b/fs/namespace.c
index 7660c2749c96..6fbc9126367a 100644
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -2596,11 +2596,12 @@ static int do_move_mount(struct path *old_path, struct path *new_path)
if (!check_mnt(p))
goto out;
- /* The thing moved should be either ours or completely unattached. */
- if (attached && !check_mnt(old))
+ /* The thing moved must be mounted... */
+ if (!is_mounted(&old->mnt))
goto out;
- if (!attached && !(ns && is_anon_ns(ns)))
+ /* ... and either ours or the root of anon namespace */
+ if (!(attached ? check_mnt(old) : is_anon_ns(ns)))
goto out;
if (old->mnt.mnt_flags & MNT_LOCKED)