diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-05 05:21:36 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-07-05 05:21:36 +0300 |
commit | 2cd7cdc7e420a343743db781484e801fd784a1f1 (patch) | |
tree | 905bc14c6cd00ba92a56ee8ab5cb809451bb5d06 | |
parent | c212ddaee2fd21e8d756dbc3c6119e3259b38fd0 (diff) | |
parent | 570d7a98e7d6d5d8706d94ffd2d40adeaa318332 (diff) | |
download | linux-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.c | 7 |
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) |