aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/namespacefs/inode.c22
1 files changed, 18 insertions, 4 deletions
diff --git a/fs/namespacefs/inode.c b/fs/namespacefs/inode.c
index dc96a22f58c196..978ab366836612 100644
--- a/fs/namespacefs/inode.c
+++ b/fs/namespacefs/inode.c
@@ -354,12 +354,26 @@ int namespacefs_create_uts_ns_dir(struct uts_namespace *ns)
dentry = namespacefs_create_file("uname", ns->ns.dentry,
&uts_fops, &ns->name);
- if (IS_ERR(dentry)) {
- dput(ns->ns.dentry);
- return PTR_ERR(dentry);
- }
+ if (IS_ERR(dentry))
+ goto error;
+ dentry = namespacefs_create_file("tasks", ns->ns.dentry,
+ &tasks_fops, &ns->ns.idr);
+ if (IS_ERR(dentry))
+ goto error;
+
+ idr_init(&ns->ns.idr);
return 0;
+
+error:
+ namespacefs_remove_dir(ns->ns.dentry);
+ return PTR_ERR(dentry);
+}
+
+void namespacefs_remove_uts_dir(struct uts_namespace *ns)
+{
+ idr_destroy(&ns->ns.idr);
+ namespacefs_remove_dir(ns->ns.dentry);
}
void namespacefs_remove_uts_ns_dir(struct uts_namespace *ns)