for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i) { class_device_unregister(&umad_dev->port[i].class_dev); class_device_unregister(&umad_dev->port[i].sm_class_dev); } 
for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i) ib_umad_kill_port(&umad_dev->port[i]); 
static void ib_umad_remove_one(struct ib_device *device){	struct ib_umad_device *umad_dev = ib_get_client_data(device, &umad_client);	int i;	if (!umad_dev)		return;	for (i = 0; i <= umad_dev->end_port - umad_dev->start_port; ++i) {		class_device_unregister(&umad_dev->port[i].class_dev);		class_device_unregister(&umad_dev->port[i].sm_class_dev);	}	kref_put(&umad_dev->ref, ib_umad_release_dev);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/a74968f8c3b1166cfe0942901b56165f06ab6f60/user_mad.c/clean/drivers/infiniband/core/user_mad.c