This driver calls input_register_device() in probe, but misses input_unregister_device() in probe failure and remove. Add the missed function calls to fix it. Signed-off-by: Chuhong Yuan <hslester96@xxxxxxxxx> --- drivers/input/touchscreen/stmfts.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/input/touchscreen/stmfts.c b/drivers/input/touchscreen/stmfts.c index b6f95f20f924..4345aa98a320 100644 --- a/drivers/input/touchscreen/stmfts.c +++ b/drivers/input/touchscreen/stmfts.c @@ -728,8 +728,10 @@ static int stmfts_probe(struct i2c_client *client, } err = devm_device_add_group(&client->dev, &stmfts_attribute_group); - if (err) + if (err) { + input_unregister_device(sdata->input); return err; + } pm_runtime_enable(&client->dev); device_enable_async_suspend(&client->dev); @@ -739,7 +741,10 @@ static int stmfts_probe(struct i2c_client *client, static int stmfts_remove(struct i2c_client *client) { + struct stmfts_data *sdata = i2c_get_clientdata(client); + pm_runtime_disable(&client->dev); + input_unregister_device(sdata->input); return 0; } -- 2.26.2