On Wed, Apr 15, 2020 at 8:06 AM Nicolas Saenz Julienne <nsaenzjulienne@xxxxxxx> wrote: > > Upon adding a new platform device we scan its properties and its > children's properties in order to create a consumer/supplier > relationship between the device and the property supplier. > > 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> > --- > 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 b4916dcc9e725..a8c2b13521b27 100644 > --- a/drivers/of/property.c > +++ b/drivers/of/property.c > @@ -1296,7 +1296,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; Thanks. Good catch. I have plenty of disabled devices in my test platform. But I guess I never ran into this scenario. Reviewed-by: Saravana Kannan <saravanak@xxxxxxxxxx> -Saravana