// SPDX-License-Identifier: GPL-2.0 #include <linux/string.h> #include <linux/err.h> #include <linux/slab.h> #include <linux/of.h> #include "of_helpers.h" /** * pseries_of_derive_parent - basically like dirname(1) * @path: the full_name of a node to be added to the tree * * Returns the node which should be the parent of the node * described by path. E.g., for path = "/foo/bar", returns * the node with full_name = "/foo". */
struct device_node *pseries_of_derive_parent(const char *path) { struct device_node *parent; char *parent_path = "/"; const char *tail; /* We do not want the trailing '/' character */ tail = kbasename(path) - 1; /* reject if path is "/" */ if (!strcmp(path, "/")) return ERR_PTR(-EINVAL); if (tail > path) { parent_path = kstrndup(path, tail - path, GFP_KERNEL); if (!parent_path) return ERR_PTR(-ENOMEM); } parent = of_find_node_by_path(parent_path); if (strcmp(parent_path, "/")) kfree(parent_path); return parent ? parent : ERR_PTR(-EINVAL); }Contributors
Person | Tokens | Prop | Commits | CommitProp |
Andy Shevchenko | 114 | 94.21% | 4 | 80.00% |
Nathan Fontenot | 7 | 5.79% | 1 | 20.00% |
Total | 121 | 100.00% | 5 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Andy Shevchenko | 130 | 94.20% | 4 | 66.67% |
Nathan Fontenot | 7 | 5.07% | 1 | 16.67% |
Greg Kroah-Hartman | 1 | 0.72% | 1 | 16.67% |
Total | 138 | 100.00% | 6 | 100.00% |