kfree(new_client); 
kfree(data); 
static int smsc47b397_detect(struct i2c_adapter *adapter, int addr, int kind){	struct i2c_client *new_client;	struct smsc47b397_data *data;	int err = 0;	if (!i2c_is_isa_adapter(adapter)) {		return 0;	}	if (!request_region(addr, SMSC_EXTENT, smsc47b397_driver.name)) {		dev_err(&adapter->dev, "Region 0x%x already in use!\n", addr);		return -EBUSY;	}	if (!(data = kmalloc(sizeof(struct smsc47b397_data), GFP_KERNEL))) {		err = -ENOMEM;		goto error_release;	}	memset(data, 0x00, sizeof(struct smsc47b397_data));	new_client = &data->client;	i2c_set_clientdata(new_client, data);	new_client->addr = addr;	init_MUTEX(&data->lock);	new_client->adapter = adapter;	new_client->driver = &smsc47b397_driver;	new_client->flags = 0;	strlcpy(new_client->name, "smsc47b397", I2C_NAME_SIZE);	init_MUTEX(&data->update_lock);	if ((err = i2c_attach_client(new_client)))		goto error_free;	device_create_file_temp(new_client, 1);	device_create_file_temp(new_client, 2);	device_create_file_temp(new_client, 3);	device_create_file_temp(new_client, 4);	device_create_file_fan(new_client, 1);	device_create_file_fan(new_client, 2);	device_create_file_fan(new_client, 3);	device_create_file_fan(new_client, 4);	return 0;error_free:	kfree(new_client);error_release:	release_region(addr, SMSC_EXTENT);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/1f57ff89fee47a317e9e8ca63bf0f139802cc116/smsc47b397.c/clean/drivers/hwmon/smsc47b397.c