From: Patrick Mochel > 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 --- 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); _