Update the code to use devm_* API so that driver core will manage resources. Signed-off-by: Manish Badarkhe <badarkhe.manish@xxxxxxxxx> --- Changes since V1: As per Dmitry's comment, avoid "devm_" operation on irq as it may cause kernel crash while device is getting unbound and CCing Nick dryer. :100644 100644 59aa240... d04dbed... M drivers/input/touchscreen/atmel_mxt_ts.c drivers/input/touchscreen/atmel_mxt_ts.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index 59aa240..d04dbed 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c @@ -1139,12 +1139,12 @@ static int mxt_probe(struct i2c_client *client, if (!pdata) return -EINVAL; - data = kzalloc(sizeof(struct mxt_data), GFP_KERNEL); - input_dev = input_allocate_device(); + data = devm_kzalloc(&client->dev, sizeof(struct mxt_data), GFP_KERNEL); + input_dev = devm_input_allocate_device(&client->dev); if (!data || !input_dev) { dev_err(&client->dev, "Failed to allocate memory\n"); error = -ENOMEM; - goto err_free_mem; + goto err_out; } data->is_tp = pdata && pdata->is_tp; @@ -1170,7 +1170,7 @@ static int mxt_probe(struct i2c_client *client, error = mxt_initialize(data); if (error) - goto err_free_mem; + goto err_out; __set_bit(EV_ABS, input_dev->evbit); __set_bit(EV_KEY, input_dev->evbit); @@ -1253,9 +1253,7 @@ err_free_irq: free_irq(client->irq, data); err_free_object: kfree(data->object_table); -err_free_mem: - input_free_device(input_dev); - kfree(data); +err_out: return error; } @@ -1267,7 +1265,6 @@ static int mxt_remove(struct i2c_client *client) free_irq(data->irq, data); input_unregister_device(data->input_dev); kfree(data->object_table); - kfree(data); return 0; } -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html