memset(data->lm75[0], 0x00, sizeof (struct i2c_client)); 
w83781d_detect_subclients(struct i2c_adapter *adapter, int address, int kind,		struct i2c_client *new_client){	int i, val1 = 0, id;	int err;	const char *client_name = "";	struct w83781d_data *data = i2c_get_clientdata(new_client);	data->lm75[0] = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);	if (!(data->lm75[0])) {		err = -ENOMEM;		goto ERROR_SC_0;	}	memset(data->lm75[0], 0x00, sizeof (struct i2c_client));	id = i2c_adapter_id(adapter);	if (force_subclients[0] == id && force_subclients[1] == address) {		for (i = 2; i <= 3; i++) {			if (force_subclients[i] < 0x48 ||			    force_subclients[i] > 0x4f) {				dev_err(&new_client->dev, "Invalid subclient "					"address %d; must be 0x48-0x4f\n",					force_subclients[i]);				err = -EINVAL;				goto ERROR_SC_1;			}		}		w83781d_write_value(new_client, W83781D_REG_I2C_SUBADDR,				(force_subclients[2] & 0x07) |				((force_subclients[3] & 0x07) << 4));		data->lm75[0]->addr = force_subclients[2];	} else {		val1 = w83781d_read_value(new_client, W83781D_REG_I2C_SUBADDR);		data->lm75[0]->addr = 0x48 + (val1 & 0x07);	}	if (kind != w83783s) {		data->lm75[1] = kmalloc(sizeof(struct i2c_client), GFP_KERNEL);		if (!(data->lm75[1])) {			err = -ENOMEM;			goto ERROR_SC_1;		}		memset(data->lm75[1], 0x0, sizeof(struct i2c_client));		if (force_subclients[0] == id &&		    force_subclients[1] == address) {			data->lm75[1]->addr = force_subclients[3];		} else {			data->lm75[1]->addr = 0x48 + ((val1 >> 4) & 0x07);		}		if (data->lm75[0]->addr == data->lm75[1]->addr) {			dev_err(&new_client->dev,			       "Duplicate addresses 0x%x for subclients.\n",			       data->lm75[0]->addr);			err = -EBUSY;			goto ERROR_SC_2;		}	}	if (kind == w83781d)		client_name = "w83781d subclient";	else if (kind == w83782d)		client_name = "w83782d subclient";	else if (kind == w83783s)		client_name = "w83783s subclient";	else if (kind == w83627hf)		client_name = "w83627hf subclient";	else if (kind == as99127f)		client_name = "as99127f subclient";	for (i = 0; i <= 1; i++) {		/* store all data in w83781d */		i2c_set_clientdata(data->lm75[i], NULL);		data->lm75[i]->adapter = adapter;		data->lm75[i]->driver = &w83781d_driver;		data->lm75[i]->flags = 0;		strlcpy(data->lm75[i]->name, client_name,			I2C_NAME_SIZE);		if ((err = i2c_attach_client(data->lm75[i]))) {			dev_err(&new_client->dev, "Subclient %d "				"registration at address 0x%x "				"failed.\n", i, data->lm75[i]->addr);			if (i == 1)				goto ERROR_SC_3;			goto ERROR_SC_2;		}		if (kind == w83783s)			break;	}	return 0;/* Undo inits in case of errors */ERROR_SC_3:	i2c_detach_client(data->lm75[0]);ERROR_SC_2:	if (data->lm75[1])		kfree(data->lm75[1]);ERROR_SC_1:	if (data->lm75[0])		kfree(data->lm75[0]);ERROR_SC_0:	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ba9c2e8d15da029ea3051c95e446b2d638ef02e2/w83781d.c/clean/drivers/hwmon/w83781d.c