summaryrefslogtreecommitdiff
path: root/fs/pnode.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2013-04-03 18:22:44 +0100
committerMark Brown <broonie@opensource.wolfsonmicro.com>2013-04-03 18:22:51 +0100
commit89cab4624a8c0ed81a1b74b6f8c884641cac5b9d (patch)
tree3a2f1ae599ee4bae60ccf11cc154d73c210c6388 /fs/pnode.c
parent2e1cc199fc8666ac5fda200e8a99f1e4dea07175 (diff)
parentc6f9b1eb0e5df468891eff17f981b76c86f95f3a (diff)
downloadlinux-next-89cab4624a8c0ed81a1b74b6f8c884641cac5b9d.tar.gz
ASoC: core: Merge Samsung fixes to avoid trivial context conflict
Merge branch 'fix/samsung' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-component to resolve trivial conflict Conflicts: sound/soc/samsung/i2s.c
Diffstat (limited to 'fs/pnode.c')
-rw-r--r--fs/pnode.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/pnode.c b/fs/pnode.c
index 3e000a51ac0d..8b29d2164da6 100644
--- a/fs/pnode.c
+++ b/fs/pnode.c
@@ -9,6 +9,7 @@
#include <linux/mnt_namespace.h>
#include <linux/mount.h>
#include <linux/fs.h>
+#include <linux/nsproxy.h>
#include "internal.h"
#include "pnode.h"
@@ -220,6 +221,7 @@ static struct mount *get_source(struct mount *dest,
int propagate_mnt(struct mount *dest_mnt, struct dentry *dest_dentry,
struct mount *source_mnt, struct list_head *tree_list)
{
+ struct user_namespace *user_ns = current->nsproxy->mnt_ns->user_ns;
struct mount *m, *child;
int ret = 0;
struct mount *prev_dest_mnt = dest_mnt;
@@ -237,6 +239,10 @@ int propagate_mnt(struct mount *dest_mnt, struct dentry *dest_dentry,
source = get_source(m, prev_dest_mnt, prev_src_mnt, &type);
+ /* Notice when we are propagating across user namespaces */
+ if (m->mnt_ns->user_ns != user_ns)
+ type |= CL_UNPRIVILEGED;
+
child = copy_tree(source, source->mnt.mnt_root, type);
if (IS_ERR(child)) {
ret = PTR_ERR(child);