@@ -161,7 +161,6 @@ int tps65912_device_init(struct tps65912 *tps65912)
err:
mfd_remove_devices(tps65912->dev);
- kfree(tps65912);
return ret;
}
@@ -169,7 +168,6 @@ void tps65912_device_exit(struct tps65912 *tps65912)
{
mfd_remove_devices(tps65912->dev);
tps65912_irq_exit(tps65912);
- kfree(tps65912);
}
MODULE_AUTHOR("Margarita Olaya <magi@slimlogic.co.uk>");
@@ -77,7 +77,8 @@ static int tps65912_i2c_probe(struct i2c_client *i2c,
{
struct tps65912 *tps65912;
- tps65912 = kzalloc(sizeof(struct tps65912), GFP_KERNEL);
+ tps65912 = devm_kzalloc(&i2c->dev,
+ sizeof(struct tps65912), GFP_KERNEL);
if (tps65912 == NULL)
return -ENOMEM;
@@ -85,7 +85,8 @@ static int tps65912_spi_probe(struct spi_device *spi)
{
struct tps65912 *tps65912;
- tps65912 = kzalloc(sizeof(struct tps65912), GFP_KERNEL);
+ tps65912 = devm_kzalloc(&spi->dev,
+ sizeof(struct tps65912), GFP_KERNEL);
if (tps65912 == NULL)
return -ENOMEM;
Saves on code and simplifies the driver, as these resources are now tracked and freed automatically when the driver is realised. Signed-off-by: Lee Jones <lee.jones@linaro.org> --- drivers/mfd/tps65912-core.c | 2 -- drivers/mfd/tps65912-i2c.c | 3 ++- drivers/mfd/tps65912-spi.c | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-)