memcpy_fromio(c->lct, c->dlct.virt, c->dlct.len); 
memcpy(c->lct, c->dlct.virt, c->dlct.len); 
int i2o_device_parse_lct(struct i2o_controller *c){	struct i2o_device *dev, *tmp;	i2o_lct *lct;	int i;	int max;	down(&c->lct_lock);	kfree(c->lct);	lct = c->dlct.virt;	c->lct = kmalloc(lct->table_size * 4, GFP_KERNEL);	if (!c->lct) {		up(&c->lct_lock);		return -ENOMEM;	}	if (lct->table_size * 4 > c->dlct.len) {		memcpy_fromio(c->lct, c->dlct.virt, c->dlct.len);		up(&c->lct_lock);		return -EAGAIN;	}	memcpy_fromio(c->lct, c->dlct.virt, lct->table_size * 4);	lct = c->lct;	max = (lct->table_size - 3) / 9;	pr_debug("%s: LCT has %d entries (LCT size: %d)\n", c->name, max,		 lct->table_size);	/* remove devices, which are not in the LCT anymore */	list_for_each_entry_safe(dev, tmp, &c->devices, list) {		int found = 0;		for (i = 0; i < max; i++) {			if (lct->lct_entry[i].tid == dev->lct_data.tid) {				found = 1;				break;			}		}		if (!found)			i2o_device_remove(dev);	}	/* add new devices, which are new in the LCT */	for (i = 0; i < max; i++) {		int found = 0;		list_for_each_entry_safe(dev, tmp, &c->devices, list) {			if (lct->lct_entry[i].tid == dev->lct_data.tid) {				found = 1;				break;			}		}		if (!found)			i2o_device_add(c, &lct->lct_entry[i]);	}	up(&c->lct_lock);	return 0;};
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9e87545f06930c1d294423a8091d1077e7444a47/device.c/clean/drivers/message/i2o/device.c