Commit ed365572 authored by Nicolas Saenz Julienne's avatar Nicolas Saenz Julienne Committed by Rob Herring

of: property: Fix create device links for all child-supplier dependencies

Upon adding a new device from a DT node, we scan its properties and its
children's properties in order to create a consumer/supplier
relationship between the device and the property provider.

That said, it's possible for some of the node's children to be disabled,
which will create links that'll never be fulfilled.

To get around this, use the for_each_available_child_of_node() function
instead of for_each_available_node() when iterating over the node's
children.

Fixes: d4387cd1 ("of: property: Create device links for all child-supplier depencencies")
Signed-off-by: default avatarNicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: default avatarSaravana Kannan <saravanak@google.com>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 8f88fad3
...@@ -1298,7 +1298,7 @@ static int of_link_to_suppliers(struct device *dev, ...@@ -1298,7 +1298,7 @@ static int of_link_to_suppliers(struct device *dev,
if (of_link_property(dev, con_np, p->name)) if (of_link_property(dev, con_np, p->name))
ret = -ENODEV; ret = -ENODEV;
for_each_child_of_node(con_np, child) for_each_available_child_of_node(con_np, child)
if (of_link_to_suppliers(dev, child) && !ret) if (of_link_to_suppliers(dev, child) && !ret)
ret = -EAGAIN; ret = -EAGAIN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment