aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/input.c
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2006-06-27 08:30:31 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-27 17:05:06 -0400
commite7374e48009a15a680d53bd1f9828b9b79a8aac9 (patch)
treedd3344add0056eb8f33fde2c3ffeb4fecd0f2baa /drivers/input/input.c
parentd38b69689c349f35502b92e20dafb30c62d49d63 (diff)
Input: fix resetting name, phys and uniq when unregistering device
It should be done before calling class_device_unregister() because it will destroy the device and free memory if there are no other references to the device. Signed-off-by: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/input/input.c')
-rw-r--r--drivers/input/input.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c
index de2e7546b491..a90486f5e491 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -998,12 +998,13 @@ void input_unregister_device(struct input_dev *dev)
998 sysfs_remove_group(&dev->cdev.kobj, &input_dev_caps_attr_group); 998 sysfs_remove_group(&dev->cdev.kobj, &input_dev_caps_attr_group);
999 sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group); 999 sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group);
1000 sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group); 1000 sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group);
1001 class_device_unregister(&dev->cdev);
1002 1001
1003 mutex_lock(&dev->mutex); 1002 mutex_lock(&dev->mutex);
1004 dev->name = dev->phys = dev->uniq = NULL; 1003 dev->name = dev->phys = dev->uniq = NULL;
1005 mutex_unlock(&dev->mutex); 1004 mutex_unlock(&dev->mutex);
1006 1005
1006 class_device_unregister(&dev->cdev);
1007
1007 input_wakeup_procfs_readers(); 1008 input_wakeup_procfs_readers();
1008} 1009}
1009EXPORT_SYMBOL(input_unregister_device); 1010EXPORT_SYMBOL(input_unregister_device);