On Fri, Apr 17, 2020 at 9:54 AM Nicolas Saenz Julienne <nsaenzjulienne@xxxxxxx> wrote: > > 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: d4387cd11741 ("of: property: Create device links for all child-supplier depencencies") > Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@xxxxxxx> > > --- > > Changes since v1: > - Slightly reword description > > drivers/of/property.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/of/property.c b/drivers/of/property.c > index 252e4f6001553..dc034eb45defd 100644 > --- a/drivers/of/property.c > +++ b/drivers/of/property.c > @@ -1298,7 +1298,7 @@ static int of_link_to_suppliers(struct device *dev, > if (of_link_property(dev, con_np, p->name)) > 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) > ret = -EAGAIN; > Reviewed-by: Saravana Kannan <saravanak@xxxxxxxxxx>