[PATCH v1 58/63] Input: atmel_mxt_ts: Remove sysfs attributes during driver detach

From: Jiada Wang
Date: Fri Aug 16 2019 - 04:40:32 EST


From: Sanjeev Chugh <Sanjeev_Chugh@xxxxxxxxxx>

This change prevents a scenario when sysfs attributes for Atmel touch
controller driver are being accessed by userland while touch driver
module unloading has already begun. At present, sysfs attribute files
are created at device probe but they are not removed while driver is
being detached.

This change will prevent calls to generic driver layer when the sysfs
driver attributes files are already deleted. Therefore, kernel will not
attempt to invoke driver routines for showing the sysfs atrributes.

Signed-off-by: Sanjeev Chugh <Sanjeev_Chugh@xxxxxxxxxx>
Signed-off-by: George G. Davis <george_davis@xxxxxxxxxx>
Signed-off-by: Jiada Wang <jiada_wang@xxxxxxxxxx>
---
drivers/input/touchscreen/atmel_mxt_ts.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index 234e3031ba42..431c2c54eab0 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -2255,10 +2255,12 @@ static int mxt_update_cfg(struct mxt_data *data, const struct firmware *fw)
static void mxt_free_input_device(struct mxt_data *data)
{
if (data->input_dev) {
- struct input_dev *dev = data->input_dev;
+ struct input_dev *input_dev = data->input_dev;

data->input_dev = NULL;
- input_unregister_device(dev);
+ sysfs_remove_group(&input_dev->dev.kobj,
+ &data->gpio_attrs);
+ input_unregister_device(input_dev);
}
}

--
2.19.2