diff --git a/drivers/base/core.c b/drivers/base/core.c index 4d026682944f..2ccee9d1eca7 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -2236,6 +2236,15 @@ static int fw_devlink_create_devlink(struct device *con, goto out; } + /* + * SYNC_STATE_ONLY links are useless once a consumer device has probed. + * So, only create it if the consumer hasn't probed yet. + */ + if (flags & DL_FLAG_SYNC_STATE_ONLY && + con->links.status != DL_DEV_NO_DRIVER && + con->links.status != DL_DEV_PROBING) + goto out; + if (con != sup_dev && !device_link_add(con, sup_dev, flags)) { dev_err(con, "Failed to create device link (0x%x) with supplier %s for %pfwf\n", flags, dev_name(sup_dev), link->consumer);