aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYordan Karadzhov (VMware) <y.karadz@gmail.com>2021-11-04 09:26:35 +0200
committerYordan Karadzhov (VMware) <y.karadz@gmail.com>2021-11-05 13:53:13 +0200
commita58cf047b06157ad6411e3964457c55e690b69a8 (patch)
tree5a0d90f8025f4a004777764376f4c165deacd7b4
parent218b0d61a5a05695e6f25692271fbe8606d9c6a1 (diff)
downloadlinux-master.tar.gz
namespacefs: Add 'tasks' file to UTS namespace directoryHEADmaster
The new file can be used to get the list of PIDs of all tasks contained in a particular UTS namespace. Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@gmail.com>
-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)