On Sat, Jul 10, 2021 at 12:38 PM Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote: > > Managed device links are deleted by device_del(). However it is possible to > add a device link to a consumer before device_add(), and then discover an I would say "discovering an error" > error prevents the device from being used. In that case normally references > to the device would be dropped and the device would be deleted. However the > device link holds a reference to the device, so the device link and device > remain indefinitely (unless the supplier is deleted). > > Amend device link removal to accept removal of a link with an > unregistered consumer device. > > Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > Fixes: b294ff3e34490 ("scsi: ufs: core: Enable power management for wlun") This patch by itself doesn't fix the above one, so the tag doesn't seem to be suitable here. Frankly, I would consider folding it into the third patch in the series in which case please feel free to add Reviewed-by: Rafael J. Wysocki <rafael@xxxxxxxxxx> to the resulting combo patch. > Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx> > --- > drivers/base/core.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/base/core.c b/drivers/base/core.c > index 2de8f7d8cf54..983e895d4ced 100644 > --- a/drivers/base/core.c > +++ b/drivers/base/core.c > @@ -887,6 +887,8 @@ static void device_link_put_kref(struct device_link *link) > { > if (link->flags & DL_FLAG_STATELESS) > kref_put(&link->kref, __device_link_del); > + else if (!device_is_registered(link->consumer)) > + __device_link_del(&link->kref); > else > WARN(1, "Unable to drop a managed device link reference\n"); > } > -- > 2.17.1 >