summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJiri Pirko2008-11-11 15:43:21 +0100
committerDmitry Torokhov2008-11-11 17:31:59 +0100
commitd6d79a785d430c0e17f7e2d662f10de022cbca93 (patch)
tree5d31c85df3b3d8483a832d8d0926f8f6484f66ea /drivers
parentInput: atkbd - add keymap quirk for Inventec Symphony systems (diff)
downloadkernel-qcow2-linux-d6d79a785d430c0e17f7e2d662f10de022cbca93.tar.gz
kernel-qcow2-linux-d6d79a785d430c0e17f7e2d662f10de022cbca93.tar.xz
kernel-qcow2-linux-d6d79a785d430c0e17f7e2d662f10de022cbca93.zip
Input: atkbd - cancel delayed work before freeing its structure
Pointed out by Oleg Nesterov. Since delayed work is used here, use of flush_scheduled_work() is not sufficient in atkbd_disconnect(). It does not wait for scheduled delayed work to finish. This patch prevents delayed work to be processed after freeing atkbd structure (used struct delayed_work is part of atkbd) by cancelling this delayed work. Signed-off-by: Jiri Pirko <jpirko@redhat.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/input/keyboard/atkbd.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
index c93b9b4ff03a..379b7ff354ec 100644
--- a/drivers/input/keyboard/atkbd.c
+++ b/drivers/input/keyboard/atkbd.c
@@ -824,7 +824,7 @@ static void atkbd_disconnect(struct serio *serio)
atkbd_disable(atkbd);
/* make sure we don't have a command in flight */
- flush_scheduled_work();
+ cancel_delayed_work_sync(&atkbd->event_work);
sysfs_remove_group(&serio->dev.kobj, &atkbd_attribute_group);
input_unregister_device(atkbd->dev);