down_read(&bus->subsys.rwsem); ret = __bus_for_each_drv(bus, start, data, fn); up_read(&bus->subsys.rwsem); return ret; 
if (!bus) return -EINVAL;  klist_iter_init_node(&bus->klist_drivers, &i, start ? &start->knode_bus : NULL); while ((drv = next_driver(&i)) && !error) error = fn(drv, data); klist_iter_exit(&i); return error; 
int bus_for_each_drv(struct bus_type * bus, struct device_driver * start,		     void * data, int (*fn)(struct device_driver *, void *)){	int ret;	down_read(&bus->subsys.rwsem);	ret = __bus_for_each_drv(bus, start, data, fn);	up_read(&bus->subsys.rwsem);	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/38fdac3cdce276554b4484a41f8ec2daf81cb2ff/bus.c/clean/drivers/base/bus.c