memset(iface, 0, sizeof(*iface)); 
static int  __init scx200_acb_create(int base, int index){	struct scx200_acb_iface *iface;	struct i2c_adapter *adapter;	int rc = 0;	char description[64];	iface = kmalloc(sizeof(*iface), GFP_KERNEL);	if (!iface) {		printk(KERN_ERR NAME ": can't allocate memory\n");		rc = -ENOMEM;		goto errout;	}	memset(iface, 0, sizeof(*iface));	adapter = &iface->adapter;	i2c_set_adapdata(adapter, iface);	snprintf(adapter->name, I2C_NAME_SIZE, "SCx200 ACB%d", index);	adapter->owner = THIS_MODULE;	adapter->id = I2C_HW_SMBUS_SCX200;	adapter->algo = &scx200_acb_algorithm;	adapter->class = I2C_CLASS_HWMON;	init_MUTEX(&iface->sem);	snprintf(description, sizeof(description), "NatSemi SCx200 ACCESS.bus [%s]", adapter->name);	if (request_region(base, 8, description) == 0) {		dev_err(&adapter->dev, "can't allocate io 0x%x-0x%x\n",			base, base + 8-1);		rc = -EBUSY;		goto errout;	}	iface->base = base;	rc = scx200_acb_probe(iface);	if (rc) {		dev_warn(&adapter->dev, "probe failed\n");		goto errout;	}	scx200_acb_reset(iface);	if (i2c_add_adapter(adapter) < 0) {		dev_err(&adapter->dev, "failed to register\n");		rc = -ENODEV;		goto errout;	}	lock_kernel();	iface->next = scx200_acb_list;	scx200_acb_list = iface;	unlock_kernel();	return 0; errout:	if (iface) {		if (iface->base)			release_region(iface->base, 8);		kfree(iface);	}	return rc;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/5263ebb51eb098b01caf229498c954999117e4a7/scx200_acb.c/clean/drivers/i2c/busses/scx200_acb.c