diff --git a/drivers/of/base.c b/drivers/of/base.c index 44a7b8b..ea330d1 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -2001,6 +2001,8 @@ { struct device_node *dn; const char *name; + const char *p; + char *q; if (!dev->device_node) return 0; @@ -2012,7 +2014,16 @@ if (!name) return 0; - dn = of_find_node_by_path(name); + /* This could make use of strchrnul if it were available */ + p = strchr(name, ':'); + if (!p) + p = name + strlen(name); + + q = xstrndup(name, p - name); + + dn = of_find_node_by_path_or_alias(NULL, q); + + free(q); return dn == dev->device_node; }