Messages in this thread Patch in this message | | | From | Jingoo Han <> | Subject | [PATCH 10/11] mfd: tps65010: use devm_request_irq() and devm_kzalloc() | Date | Wed, 20 Feb 2013 15:14:05 +0900 |
| |
Use devm_request_irq() and devm_kzalloc() to make cleanup paths more simple.
Signed-off-by: Jingoo Han <jg1.han@samsung.com> --- drivers/mfd/tps65010.c | 15 +++++---------- 1 files changed, 5 insertions(+), 10 deletions(-)
diff --git a/drivers/mfd/tps65010.c b/drivers/mfd/tps65010.c index da2691f..a5438cc 100644 --- a/drivers/mfd/tps65010.c +++ b/drivers/mfd/tps65010.c @@ -525,11 +525,8 @@ static int __exit tps65010_remove(struct i2c_client *client) dev_dbg(&client->dev, "board %s %s err %d\n", "teardown", client->name, status); } - if (client->irq > 0) - free_irq(client->irq, tps); cancel_delayed_work_sync(&tps->work); debugfs_remove(tps->file); - kfree(tps); the_tps = NULL; return 0; } @@ -549,7 +546,7 @@ static int tps65010_probe(struct i2c_client *client, if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) return -EINVAL; - tps = kzalloc(sizeof *tps, GFP_KERNEL); + tps = devm_kzalloc(&client->dev, sizeof(*tps), GFP_KERNEL); if (!tps) return -ENOMEM; @@ -562,12 +559,13 @@ static int tps65010_probe(struct i2c_client *client, * so this driver uses falling-edge triggers instead. */ if (client->irq > 0) { - status = request_irq(client->irq, tps65010_irq, - IRQF_TRIGGER_FALLING, DRIVER_NAME, tps); + status = devm_request_irq(&client->dev, client->irq, + tps65010_irq, IRQF_TRIGGER_FALLING, + DRIVER_NAME, tps); if (status < 0) { dev_dbg(&client->dev, "can't get IRQ %d, err %d\n", client->irq, status); - goto fail1; + return status; } /* annoying race here, ideally we'd have an option * to claim the irq now and enable it later. @@ -667,9 +665,6 @@ static int tps65010_probe(struct i2c_client *client, } return 0; -fail1: - kfree(tps); - return status; } static const struct i2c_device_id tps65010_id[] = { -- 1.7.2.5
| |