|
@@ -590,7 +590,8 @@ emc2103_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|
|
if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA))
|
|
|
return -EIO;
|
|
|
|
|
|
- data = kzalloc(sizeof(struct emc2103_data), GFP_KERNEL);
|
|
|
+ data = devm_kzalloc(&client->dev, sizeof(struct emc2103_data),
|
|
|
+ GFP_KERNEL);
|
|
|
if (!data)
|
|
|
return -ENOMEM;
|
|
|
|
|
@@ -608,7 +609,7 @@ emc2103_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|
|
if (status < 0) {
|
|
|
dev_dbg(&client->dev, "reg 0x%02x, err %d\n", REG_CONF1,
|
|
|
status);
|
|
|
- goto exit_free;
|
|
|
+ return status;
|
|
|
}
|
|
|
|
|
|
/* detect current state of hardware */
|
|
@@ -631,7 +632,7 @@ emc2103_probe(struct i2c_client *client, const struct i2c_device_id *id)
|
|
|
/* Register sysfs hooks */
|
|
|
status = sysfs_create_group(&client->dev.kobj, &emc2103_group);
|
|
|
if (status)
|
|
|
- goto exit_free;
|
|
|
+ return status;
|
|
|
|
|
|
if (data->temp_count >= 3) {
|
|
|
status = sysfs_create_group(&client->dev.kobj,
|
|
@@ -666,8 +667,6 @@ exit_remove_temp3:
|
|
|
sysfs_remove_group(&client->dev.kobj, &emc2103_temp3_group);
|
|
|
exit_remove:
|
|
|
sysfs_remove_group(&client->dev.kobj, &emc2103_group);
|
|
|
-exit_free:
|
|
|
- kfree(data);
|
|
|
return status;
|
|
|
}
|
|
|
|
|
@@ -685,7 +684,6 @@ static int emc2103_remove(struct i2c_client *client)
|
|
|
|
|
|
sysfs_remove_group(&client->dev.kobj, &emc2103_group);
|
|
|
|
|
|
- kfree(data);
|
|
|
return 0;
|
|
|
}
|
|
|
|