aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorDmitry Torokhov <dtor@insightbb.com>2006-09-14 01:32:14 -0400
committerDmitry Torokhov <dtor@insightbb.com>2006-09-14 01:32:14 -0400
commit655816e49867082d13ece0da31d76e12cc0de4a5 (patch)
tree6217dd7134def6cccdc90d41491c87c32591a2f4 /drivers/input
parent66e66118837ed95a299328437c2d9fb4b5137352 (diff)
Input: fix input module refcounting
Now that input_free_device is basically an alias for input_put_device we need to acquire a reference to input module right when we allocate device because input_dev_release releases reference to input module unconditionally. Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/input.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/input/input.c b/drivers/input/input.c
index 4954c790ccb..f2c85a60a0d 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -912,6 +912,8 @@ struct input_dev *input_allocate_device(void)
912 mutex_init(&dev->mutex); 912 mutex_init(&dev->mutex);
913 INIT_LIST_HEAD(&dev->h_list); 913 INIT_LIST_HEAD(&dev->h_list);
914 INIT_LIST_HEAD(&dev->node); 914 INIT_LIST_HEAD(&dev->node);
915
916 __module_get(THIS_MODULE);
915 } 917 }
916 918
917 return dev; 919 return dev;
@@ -985,8 +987,6 @@ int input_register_device(struct input_dev *dev)
985 if (error) 987 if (error)
986 goto fail3; 988 goto fail3;
987 989
988 __module_get(THIS_MODULE);
989
990 path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL); 990 path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL);
991 printk(KERN_INFO "input: %s as %s\n", 991 printk(KERN_INFO "input: %s as %s\n",
992 dev->name ? dev->name : "Unspecified device", path ? path : "N/A"); 992 dev->name ? dev->name : "Unspecified device", path ? path : "N/A");