diff mbox series

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

Message ID 20190816083830.19553-4-jiada_wang@mentor.com (mailing list archive)
State Changes Requested, archived
Headers show
Series None | expand

Commit Message

Wang, Jiada Aug. 16, 2019, 8:38 a.m. UTC
From: Sanjeev Chugh <Sanjeev_Chugh@mentor.com>

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@mentor.com>
Signed-off-by: George G. Davis <george_davis@mentor.com>
Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
---
 drivers/input/touchscreen/atmel_mxt_ts.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
diff mbox series

Patch

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);
 	}
 }