diff options
Diffstat (limited to 'drivers/of/property.c')
-rw-r--r-- | drivers/of/property.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/of/property.c b/drivers/of/property.c index e225ab17f598..fbc201330ba0 100644 --- a/drivers/of/property.c +++ b/drivers/of/property.c @@ -1051,8 +1051,14 @@ static int of_link_to_phandle(struct device *dev, struct device_node *sup_np, sup_dev = get_dev_from_fwnode(&sup_np->fwnode); is_populated = of_node_check_flag(sup_np, OF_POPULATED); of_node_put(sup_np); - if (!sup_dev) - return is_populated ? 0 : -EAGAIN; + if (!sup_dev && is_populated) { + /* Early device without struct device. */ + dev_dbg(dev, "Not linking to %pOFP - No struct device\n", + sup_np); + return -ENODEV; + } else if (!sup_dev) { + return -EAGAIN; + } if (!device_link_add(dev, sup_dev, dl_flags)) ret = -EAGAIN; put_device(sup_dev); |