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()
This commit is contained in:
commit
29f785ff76
|
@ -2105,6 +2105,7 @@ static int attach_recursive_mnt(struct mount *source_mnt,
|
||||||
/* Notice when we are propagating across user namespaces */
|
/* Notice when we are propagating across user namespaces */
|
||||||
if (child->mnt_parent->mnt_ns->user_ns != user_ns)
|
if (child->mnt_parent->mnt_ns->user_ns != user_ns)
|
||||||
lock_mnt_tree(child);
|
lock_mnt_tree(child);
|
||||||
|
child->mnt.mnt_flags &= ~MNT_LOCKED;
|
||||||
commit_tree(child);
|
commit_tree(child);
|
||||||
}
|
}
|
||||||
put_mountpoint(smp);
|
put_mountpoint(smp);
|
||||||
|
@ -3445,6 +3446,7 @@ SYSCALL_DEFINE3(fsmount, int, fs_fd, unsigned int, flags,
|
||||||
ns->root = mnt;
|
ns->root = mnt;
|
||||||
ns->mounts = 1;
|
ns->mounts = 1;
|
||||||
list_add(&mnt->mnt_list, &ns->list);
|
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
|
/* Attach to an apparent O_PATH fd with a note that we need to unmount
|
||||||
* it, not just simply put it.
|
* it, not just simply put it.
|
||||||
|
|
|
@ -261,7 +261,6 @@ static int propagate_one(struct mount *m)
|
||||||
child = copy_tree(last_source, last_source->mnt.mnt_root, type);
|
child = copy_tree(last_source, last_source->mnt.mnt_root, type);
|
||||||
if (IS_ERR(child))
|
if (IS_ERR(child))
|
||||||
return PTR_ERR(child);
|
return PTR_ERR(child);
|
||||||
child->mnt.mnt_flags &= ~MNT_LOCKED;
|
|
||||||
mnt_set_mountpoint(m, mp, child);
|
mnt_set_mountpoint(m, mp, child);
|
||||||
last_dest = m;
|
last_dest = m;
|
||||||
last_source = child;
|
last_source = child;
|
||||||
|
|
Loading…
Reference in a new issue