summaryrefslogtreecommitdiffstats
path: root/fs/proc/self.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/proc/self.c')
-rw-r--r--fs/proc/self.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/fs/proc/self.c b/fs/proc/self.c
index 127265e5c55f..57c0a1047250 100644
--- a/fs/proc/self.c
+++ b/fs/proc/self.c
@@ -38,6 +38,7 @@ int proc_setup_self(struct super_block *s)
38 struct inode *root_inode = d_inode(s->s_root); 38 struct inode *root_inode = d_inode(s->s_root);
39 struct pid_namespace *ns = proc_pid_ns(root_inode); 39 struct pid_namespace *ns = proc_pid_ns(root_inode);
40 struct dentry *self; 40 struct dentry *self;
41 int ret = -ENOMEM;
41 42
42 inode_lock(root_inode); 43 inode_lock(root_inode);
43 self = d_alloc_name(s->s_root, "self"); 44 self = d_alloc_name(s->s_root, "self");
@@ -51,20 +52,19 @@ int proc_setup_self(struct super_block *s)
51 inode->i_gid = GLOBAL_ROOT_GID; 52 inode->i_gid = GLOBAL_ROOT_GID;
52 inode->i_op = &proc_self_inode_operations; 53 inode->i_op = &proc_self_inode_operations;
53 d_add(self, inode); 54 d_add(self, inode);
55 ret = 0;
54 } else { 56 } else {
55 dput(self); 57 dput(self);
56 self = ERR_PTR(-ENOMEM);
57 } 58 }
58 } else {
59 self = ERR_PTR(-ENOMEM);
60 } 59 }
61 inode_unlock(root_inode); 60 inode_unlock(root_inode);
62 if (IS_ERR(self)) { 61
62 if (ret)
63 pr_err("proc_fill_super: can't allocate /proc/self\n"); 63 pr_err("proc_fill_super: can't allocate /proc/self\n");
64 return PTR_ERR(self); 64 else
65 } 65 ns->proc_self = self;
66 ns->proc_self = self; 66
67 return 0; 67 return ret;
68} 68}
69 69
70void __init proc_self_init(void) 70void __init proc_self_init(void)