Commit 46cf047a authored by Al Viro's avatar Al Viro

procfs: set ->user_ns before calling ->get_tree()

here it's even simpler than in mqueue - pid_ns_prepare_proc()
does everything needed anyway.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 709a643d
...@@ -157,8 +157,6 @@ static int proc_get_tree(struct fs_context *fc) ...@@ -157,8 +157,6 @@ static int proc_get_tree(struct fs_context *fc)
{ {
struct proc_fs_context *ctx = fc->fs_private; struct proc_fs_context *ctx = fc->fs_private;
put_user_ns(fc->user_ns);
fc->user_ns = get_user_ns(ctx->pid_ns->user_ns);
fc->s_fs_info = ctx->pid_ns; fc->s_fs_info = ctx->pid_ns;
return vfs_get_super(fc, vfs_get_keyed_super, proc_fill_super); return vfs_get_super(fc, vfs_get_keyed_super, proc_fill_super);
} }
...@@ -167,8 +165,7 @@ static void proc_fs_context_free(struct fs_context *fc) ...@@ -167,8 +165,7 @@ static void proc_fs_context_free(struct fs_context *fc)
{ {
struct proc_fs_context *ctx = fc->fs_private; struct proc_fs_context *ctx = fc->fs_private;
if (ctx->pid_ns) put_pid_ns(ctx->pid_ns);
put_pid_ns(ctx->pid_ns);
kfree(ctx); kfree(ctx);
} }
...@@ -188,6 +185,8 @@ static int proc_init_fs_context(struct fs_context *fc) ...@@ -188,6 +185,8 @@ static int proc_init_fs_context(struct fs_context *fc)
return -ENOMEM; return -ENOMEM;
ctx->pid_ns = get_pid_ns(task_active_pid_ns(current)); ctx->pid_ns = get_pid_ns(task_active_pid_ns(current));
put_user_ns(fc->user_ns);
fc->user_ns = get_user_ns(ctx->pid_ns->user_ns);
fc->fs_private = ctx; fc->fs_private = ctx;
fc->ops = &proc_fs_context_ops; fc->ops = &proc_fs_context_ops;
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment