down_read(&drv->bus->subsys.rwsem);  dev = NULL; list_for_each_entry(d, &drv->devices, driver_list) { dev = get_device(d);  if (dev && !strncmp(bus_id, dev->bus_id, BUS_ID_SIZE)) break; else if (dev) { put_device(dev); dev = NULL; } } up_read(&drv->bus->subsys.rwsem); 
dev = driver_find_device(drv, NULL, (void *)bus_id, __ccwdev_check_busid); 
get_ccwdev_by_busid(struct ccw_driver *cdrv, const char *bus_id){	struct device *d, *dev;	struct device_driver *drv;	drv = get_driver(&cdrv->driver);	if (!drv)		return 0;	down_read(&drv->bus->subsys.rwsem);	dev = NULL;	list_for_each_entry(d, &drv->devices, driver_list) {		dev = get_device(d);		if (dev && !strncmp(bus_id, dev->bus_id, BUS_ID_SIZE))			break;		else if (dev) {			put_device(dev);			dev = NULL;		}	}	up_read(&drv->bus->subsys.rwsem);	put_driver(drv);	return dev ? to_ccwdev(dev) : 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b0744bd2925a4a24865963322534107d2ad553f9/device.c/buggy/drivers/s390/cio/device.c