summaryrefslogtreecommitdiffstats
path: root/fs/seq_file.c
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2012-05-23 18:01:20 -0600
committerEric W. Biederman <ebiederm@xmission.com>2012-08-14 21:47:55 -0700
commitadb37c4c67f807f16beb222028fb3ce9a354dc2b (patch)
tree59f46f84b013f1a6390c72d58fe5b158c6e4b58e /fs/seq_file.c
parentfc5795c8a94c2d0b221dffae9ebb22686b3dafd8 (diff)
downloadlinux-adb37c4c67f807f16beb222028fb3ce9a354dc2b.tar.gz
linux-adb37c4c67f807f16beb222028fb3ce9a354dc2b.tar.bz2
linux-adb37c4c67f807f16beb222028fb3ce9a354dc2b.zip
userns: Make seq_file's user namespace accessible
struct file already has a user namespace associated with it in file->f_cred->user_ns, unfortunately because struct seq_file has no struct file backpointer associated with it, it is difficult to get at the user namespace in seq_file context. Therefore add a helper function seq_user_ns to return the associated user namespace and a user_ns field to struct seq_file to be used in implementing seq_user_ns. Cc: Al Viro <viro@ZenIV.linux.org.uk> Cc: Eric Dumazet <eric.dumazet@gmail.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Alexey Dobriyan <adobriyan@gmail.com> Acked-by: David S. Miller <davem@davemloft.net> Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Diffstat (limited to 'fs/seq_file.c')
-rw-r--r--fs/seq_file.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/seq_file.c b/fs/seq_file.c
index 14cf9de1dbe1..99dffab4c4e4 100644
--- a/fs/seq_file.c
+++ b/fs/seq_file.c
@@ -9,6 +9,7 @@
#include <linux/export.h>
#include <linux/seq_file.h>
#include <linux/slab.h>
+#include <linux/cred.h>
#include <asm/uaccess.h>
#include <asm/page.h>
@@ -56,6 +57,9 @@ int seq_open(struct file *file, const struct seq_operations *op)
memset(p, 0, sizeof(*p));
mutex_init(&p->lock);
p->op = op;
+#ifdef CONFIG_USER_NS
+ p->user_ns = file->f_cred->user_ns;
+#endif
/*
* Wrappers around seq_open(e.g. swaps_open) need to be