diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-06-17 16:28:28 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-06-17 16:28:28 -0700 |
commit | 29f785ff76b65696800b75c3d8e0b58e603bb1d0 (patch) | |
tree | 7aba3c5daf31b754da4b5eb4ee7a4df2348954cc | |
parent | da0f382029868806e88c046eb2560fdee7a9457c (diff) | |
parent | d728cf79164bb38e9628d15276e636539f857ef1 (diff) | |
download | linux-29f785ff76b65696800b75c3d8e0b58e603bb1d0.tar.gz linux-29f785ff76b65696800b75c3d8e0b58e603bb1d0.tar.bz2 linux-29f785ff76b65696800b75c3d8e0b58e603bb1d0.zip |
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs fixes from Al Viro:
"MS_MOVE regression fix + breakage in fsmount(2) (also introduced in
this cycle, along with fsmount(2) itself).
I'm still digging through the piles of mail, so there might be more
fixes to follow, but these two are obvious and self-contained, so
there's no point delaying those..."
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
fs/namespace: fix unprivileged mount propagation
vfs: fsmount: add missing mntget()
-rw-r--r-- | fs/namespace.c | 2 | ||||
-rw-r--r-- | fs/pnode.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/fs/namespace.c b/fs/namespace.c index b26778bdc236..7660c2749c96 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2105,6 +2105,7 @@ static int attach_recursive_mnt(struct mount *source_mnt, /* Notice when we are propagating across user namespaces */ if (child->mnt_parent->mnt_ns->user_ns != user_ns) lock_mnt_tree(child); + child->mnt.mnt_flags &= ~MNT_LOCKED; commit_tree(child); } put_mountpoint(smp); @@ -3445,6 +3446,7 @@ SYSCALL_DEFINE3(fsmount, int, fs_fd, unsigned int, flags, ns->root = mnt; ns->mounts = 1; list_add(&mnt->mnt_list, &ns->list); + mntget(newmount.mnt); /* Attach to an apparent O_PATH fd with a note that we need to unmount * it, not just simply put it. diff --git a/fs/pnode.c b/fs/pnode.c index 595857a1883e..49f6d7ff2139 100644 --- a/fs/pnode.c +++ b/fs/pnode.c @@ -261,7 +261,6 @@ static int propagate_one(struct mount *m) child = copy_tree(last_source, last_source->mnt.mnt_root, type); if (IS_ERR(child)) return PTR_ERR(child); - child->mnt.mnt_flags &= ~MNT_LOCKED; mnt_set_mountpoint(m, mp, child); last_dest = m; last_source = child; |