struct device_driver * drv;  
/* * If anyone calls device_release_driver() recursively from * within their ->remove callback for the same device, they * will deadlock right here. */ 
void device_release_driver(struct device * dev){	struct device_driver * drv;	down(&dev->sem);	if (dev->driver) {		drv = dev->driver;		sysfs_remove_link(&drv->kobj, kobject_name(&dev->kobj));		sysfs_remove_link(&dev->kobj, "driver");		klist_del(&dev->knode_driver);		if (drv->remove)			drv->remove(dev);		dev->driver = NULL;	}	up(&dev->sem);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c95a6b057b108c2b7add35cba1354f9af921349e/dd.c/buggy/drivers/base/dd.c