|
@@ -1002,18 +1002,18 @@ static int i2c_hid_probe(struct i2c_client *client,
|
|
|
return client->irq;
|
|
|
}
|
|
|
|
|
|
- ihid = kzalloc(sizeof(struct i2c_hid), GFP_KERNEL);
|
|
|
+ ihid = devm_kzalloc(&client->dev, sizeof(*ihid), GFP_KERNEL);
|
|
|
if (!ihid)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
if (client->dev.of_node) {
|
|
|
ret = i2c_hid_of_probe(client, &ihid->pdata);
|
|
|
if (ret)
|
|
|
- goto err;
|
|
|
+ return ret;
|
|
|
} else if (!platform_data) {
|
|
|
ret = i2c_hid_acpi_pdata(client, &ihid->pdata);
|
|
|
if (ret)
|
|
|
- goto err;
|
|
|
+ return ret;
|
|
|
} else {
|
|
|
ihid->pdata = *platform_data;
|
|
|
}
|
|
@@ -1126,7 +1126,6 @@ err_regulator:
|
|
|
|
|
|
err:
|
|
|
i2c_hid_free_buffers(ihid);
|
|
|
- kfree(ihid);
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
@@ -1150,8 +1149,6 @@ static int i2c_hid_remove(struct i2c_client *client)
|
|
|
|
|
|
regulator_disable(ihid->pdata.supply);
|
|
|
|
|
|
- kfree(ihid);
|
|
|
-
|
|
|
return 0;
|
|
|
}
|
|
|
|