|
|
@@ -926,9 +926,6 @@ static void __device_release_driver(struct device *dev, struct device *parent)
|
|
|
|
|
|
drv = dev->driver;
|
|
|
if (drv) {
|
|
|
- if (driver_allows_async_probing(drv))
|
|
|
- async_synchronize_full();
|
|
|
-
|
|
|
while (device_links_busy(dev)) {
|
|
|
device_unlock(dev);
|
|
|
if (parent && dev->bus->need_parent_lock)
|
|
|
@@ -1034,6 +1031,9 @@ void driver_detach(struct device_driver *drv)
|
|
|
struct device_private *dev_prv;
|
|
|
struct device *dev;
|
|
|
|
|
|
+ if (driver_allows_async_probing(drv))
|
|
|
+ async_synchronize_full();
|
|
|
+
|
|
|
for (;;) {
|
|
|
spin_lock(&drv->p->klist_devices.k_lock);
|
|
|
if (list_empty(&drv->p->klist_devices.k_list)) {
|