diff --git a/drivers/base/dd.c b/drivers/base/dd.c index edfc9f0b1180..2607f859881a 100644 --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -931,11 +931,11 @@ static void __device_release_driver(struct device *dev, struct device *parent) while (device_links_busy(dev)) { device_unlock(dev); - if (parent) + if (parent && dev->bus->need_parent_lock) device_unlock(parent); device_links_unbind_consumers(dev); - if (parent) + if (parent && dev->bus->need_parent_lock) device_lock(parent); device_lock(dev);