use kernfs_path_from_node
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
diff --git a/fs/kernfs/dir.c b/fs/kernfs/dir.c
index 4864fac..449ab3b 100644
--- a/fs/kernfs/dir.c
+++ b/fs/kernfs/dir.c
@@ -308,6 +308,17 @@
spin_unlock_irqrestore(&kernfs_rename_lock, flags);
}
+char *kernfs_abs_path(struct kernfs_node *kn, char *buf, size_t buflen)
+{
+ struct kernfs_root *rkn = kernfs_root(kn);
+ int ret;
+
+ ret = kernfs_path_from_node(kn, rkn->kn, buf, buflen);
+ if (ret < 0 || ret >= buflen)
+ return NULL;
+ return buf;
+}
+
/**
* kernfs_get_parent - determine the parent node and pin it
* @kn: kernfs_node of interest
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h
index c06c442..e0d7295 100644
--- a/include/linux/kernfs.h
+++ b/include/linux/kernfs.h
@@ -269,6 +269,7 @@
size_t kernfs_path_len(struct kernfs_node *kn);
int kernfs_path_from_node(struct kernfs_node *root_kn, struct kernfs_node *kn,
char *buf, size_t buflen);
+char *kernfs_abs_path(struct kernfs_node *kn, char *buf, size_t buflen);
char *kernfs_path(struct kernfs_node *kn, char *buf, size_t buflen);
void pr_cont_kernfs_name(struct kernfs_node *kn);
void pr_cont_kernfs_path(struct kernfs_node *kn);
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 18d874e..0305cd6 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -1593,7 +1593,8 @@
seq_puts(seq, ",clone_children");
if (strlen(root->name))
seq_show_option(seq, "name", root->name);
- if (kernfs_path(kf_root->kn, buf, PATH_MAX))
+ if (kernfs_abs_path(kf_root->kn, buf, PATH_MAX) &&
+ strcmp(buf, "/") != 0)
seq_show_option(seq, "nsroot", buf);
return 0;
}