diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2009-12-12 00:39:51 -0500 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2009-12-12 02:45:25 -0500 |
commit | e40ec6ff2f42b5516d77a5c34bfa6a9ce45834f4 (patch) | |
tree | 9189d2dbe80c4dec85578551d7e4bc6bdb9b027d /drivers/input/serio/hil_mlc.c | |
parent | 898d1053f72c192a6e7f701e915995afff695de8 (diff) |
Input: hil-mlc - use del_timer_sync() when unloading the driver
del_timer() does not wait for the timer to finish running before returning
and therefore is technically not safe. Also make sure to enable tasklet
before kicking timer that will schedule it.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input/serio/hil_mlc.c')
-rw-r--r-- | drivers/input/serio/hil_mlc.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/drivers/input/serio/hil_mlc.c b/drivers/input/serio/hil_mlc.c index 7ba9f2b2c041..6cd03ebaf5fb 100644 --- a/drivers/input/serio/hil_mlc.c +++ b/drivers/input/serio/hil_mlc.c | |||
@@ -993,10 +993,8 @@ int hil_mlc_unregister(hil_mlc *mlc) | |||
993 | 993 | ||
994 | static int __init hil_mlc_init(void) | 994 | static int __init hil_mlc_init(void) |
995 | { | 995 | { |
996 | init_timer(&hil_mlcs_kicker); | 996 | setup_timer(&hil_mlcs_kicker, &hil_mlcs_timer, 0); |
997 | hil_mlcs_kicker.expires = jiffies + HZ; | 997 | mod_timer(&hil_mlcs_kicker, jiffies + HZ); |
998 | hil_mlcs_kicker.function = &hil_mlcs_timer; | ||
999 | add_timer(&hil_mlcs_kicker); | ||
1000 | 998 | ||
1001 | tasklet_enable(&hil_mlcs_tasklet); | 999 | tasklet_enable(&hil_mlcs_tasklet); |
1002 | 1000 | ||
@@ -1005,7 +1003,7 @@ static int __init hil_mlc_init(void) | |||
1005 | 1003 | ||
1006 | static void __exit hil_mlc_exit(void) | 1004 | static void __exit hil_mlc_exit(void) |
1007 | { | 1005 | { |
1008 | del_timer(&hil_mlcs_kicker); | 1006 | del_timer_sync(&hil_mlcs_kicker); |
1009 | 1007 | ||
1010 | tasklet_disable(&hil_mlcs_tasklet); | 1008 | tasklet_disable(&hil_mlcs_tasklet); |
1011 | tasklet_kill(&hil_mlcs_tasklet); | 1009 | tasklet_kill(&hil_mlcs_tasklet); |