if (!get_bus(&css_bus_type)) return NULL; down_read(&css_bus_type.subsys.rwsem); sch = NULL; list_for_each(entry, &css_bus_type.devices.list) { dev = get_device(container_of(entry, struct device, bus_list)); if (!dev) continue; sch = to_subchannel(dev); if (sch->irq == irq) break; put_device(dev); sch = NULL; } up_read(&css_bus_type.subsys.rwsem); put_bus(&css_bus_type); 
dev = bus_find_device(&css_bus_type, NULL, (void *)(unsigned long)irq, check_subchannel); 
get_subchannel_by_schid(int irq){	struct subchannel *sch;	struct list_head *entry;	struct device *dev;	if (!get_bus(&css_bus_type))		return NULL;	down_read(&css_bus_type.subsys.rwsem);	sch = NULL;	list_for_each(entry, &css_bus_type.devices.list) {		dev = get_device(container_of(entry,					      struct device, bus_list));		if (!dev)			continue;		sch = to_subchannel(dev);		if (sch->irq == irq)			break;		put_device(dev);		sch = NULL;	}	up_read(&css_bus_type.subsys.rwsem);	put_bus(&css_bus_type);	return sch;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b0744bd2925a4a24865963322534107d2ad553f9/css.c/buggy/drivers/s390/cio/css.c