memset(data, 0, sizeof(struct max6875_data)); 
static int max6875_detect(struct i2c_adapter *adapter, int address, int kind){	struct i2c_client *real_client;	struct i2c_client *fake_client;	struct max6875_data *data;	int err = 0;	if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_WRITE_BYTE_DATA				     | I2C_FUNC_SMBUS_READ_BYTE))		return 0;	/* Only check even addresses */	if (address & 1)		return 0;	if (!(data = kmalloc(sizeof(struct max6875_data), GFP_KERNEL)))		return -ENOMEM;	memset(data, 0, sizeof(struct max6875_data));	/* A fake client is created on the odd address */	if (!(fake_client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL))) {		err = -ENOMEM;		goto exit_kfree1;	}	memset(fake_client, 0, sizeof(struct i2c_client));	/* Init real i2c_client */	real_client = &data->client;	i2c_set_clientdata(real_client, data);	real_client->addr = address;	real_client->adapter = adapter;	real_client->driver = &max6875_driver;	real_client->flags = 0;	strlcpy(real_client->name, "max6875", I2C_NAME_SIZE);	init_MUTEX(&data->update_lock);	/* Init fake client data */	/* set the client data to the i2c_client so that it will get freed */	i2c_set_clientdata(fake_client, fake_client);	fake_client->addr = address | 1;	fake_client->adapter = adapter;	fake_client->driver = &max6875_driver;	fake_client->flags = 0;	strlcpy(fake_client->name, "max6875 subclient", I2C_NAME_SIZE);	/* Prevent 24RF08 corruption (in case of user error) */	i2c_smbus_write_quick(real_client, 0);	if ((err = i2c_attach_client(real_client)) != 0)		goto exit_kfree2;	if ((err = i2c_attach_client(fake_client)) != 0)		goto exit_detach;	sysfs_create_bin_file(&real_client->dev.kobj, &user_eeprom_attr);	return 0;exit_detach:	i2c_detach_client(real_client);exit_kfree2:	kfree(fake_client);exit_kfree1:	kfree(data);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/5263ebb51eb098b01caf229498c954999117e4a7/max6875.c/buggy/drivers/i2c/chips/max6875.c