diff options
author | Rob Herring <robh@kernel.org> | 2017-06-02 20:43:18 +0300 |
---|---|---|
committer | Rob Herring <robh@kernel.org> | 2017-06-22 20:38:29 +0300 |
commit | 27497e11b56a072dfd80e9f1f229049b2921a1a6 (patch) | |
tree | 99a9bcbc25e186d8f8644945e6fc865e02a60b01 /drivers/of/resolver.c | |
parent | 95e6b1fa3311c8a7b151d38540695409048d1495 (diff) | |
download | linux-27497e11b56a072dfd80e9f1f229049b2921a1a6.tar.xz |
of: find_node_by_full_name rewrite to compare each level
find_node_by_full_name() does the same thing as of_find_node_by_path(),
but takes no locks and doesn't work on aliases. Refactor
of_find_node_opts_by_path() into __of_find_node_by_full_path() and
replace find_node_by_full_name() with it.
Signed-off-by: Rob Herring <robh@kernel.org>
Diffstat (limited to 'drivers/of/resolver.c')
-rw-r--r-- | drivers/of/resolver.c | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/drivers/of/resolver.c b/drivers/of/resolver.c index 63626d7d9adb..99309cb7d372 100644 --- a/drivers/of/resolver.c +++ b/drivers/of/resolver.c @@ -20,35 +20,11 @@ #include <linux/errno.h> #include <linux/slab.h> +#include "of_private.h" + /* illegal phandle value (set when unresolved) */ #define OF_PHANDLE_ILLEGAL 0xdeadbeef -/** - * Find a node with the give full name by recursively following any of - * the child node links. - */ -static struct device_node *find_node_by_full_name(struct device_node *node, - const char *full_name) -{ - struct device_node *child, *found; - - if (!node) - return NULL; - - if (!of_node_cmp(node->full_name, full_name)) - return of_node_get(node); - - for_each_child_of_node(node, child) { - found = find_node_by_full_name(child, full_name); - if (found != NULL) { - of_node_put(child); - return found; - } - } - - return NULL; -} - static phandle live_tree_max_phandle(void) { struct device_node *node; @@ -138,7 +114,7 @@ static int update_usages_of_a_phandle_reference(struct device_node *overlay, if (err) goto err_fail; - refnode = find_node_by_full_name(overlay, node_path); + refnode = __of_find_node_by_full_path(of_node_get(overlay), node_path); if (!refnode) continue; |