spin_lock_irq(&drv->klist_devices.k_lock); 
spin_lock(&drv->klist_devices.k_lock); 
void driver_detach(struct device_driver * drv){	struct device * dev;	for (;;) {		spin_lock_irq(&drv->klist_devices.k_lock);		if (list_empty(&drv->klist_devices.k_list)) {			spin_unlock_irq(&drv->klist_devices.k_lock);			break;		}		dev = list_entry(drv->klist_devices.k_list.prev,				struct device, knode_driver.n_node);		get_device(dev);		spin_unlock_irq(&drv->klist_devices.k_lock);		down(&dev->sem);		if (dev->driver == drv)			__device_release_driver(dev);		up(&dev->sem);		put_device(dev);	}}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/2b08c8d0468866f86da97f836c6ac14338cb81a9/dd.c/buggy/drivers/base/dd.c