
From: Patrick Mochel <mochel@digitalimplant.org>

> It looks like we're getting stuck in the wait_for_completion() in the new
> klist_remove().

D'oh! It's getting hung while waiting to remove the current node from the
list (which it can't remove because it's being used). The patch below
should fix it.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/base/dd.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN drivers/base/dd.c~bk-driver-core-hang-fix drivers/base/dd.c
--- 25/drivers/base/dd.c~bk-driver-core-hang-fix	Thu Mar 24 17:17:16 2005
+++ 25-akpm/drivers/base/dd.c	Thu Mar 24 17:17:16 2005
@@ -177,7 +177,7 @@ void device_release_driver(struct device
 
 	sysfs_remove_link(&drv->kobj, kobject_name(&dev->kobj));
 	sysfs_remove_link(&dev->kobj, "driver");
-	klist_remove(&dev->knode_driver);
+	klist_del(&dev->knode_driver);
 
 	down(&dev->sem);
 	device_detach_shutdown(dev);
_
