Commit d6d79a78 authored by Jiri Pirko's avatar Jiri Pirko Committed by Dmitry Torokhov

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: default avatarJiri Pirko <jpirko@redhat.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent a8215b81
...@@ -824,7 +824,7 @@ static void atkbd_disconnect(struct serio *serio) ...@@ -824,7 +824,7 @@ static void atkbd_disconnect(struct serio *serio)
atkbd_disable(atkbd); atkbd_disable(atkbd);
/* make sure we don't have a command in flight */ /* 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); sysfs_remove_group(&serio->dev.kobj, &atkbd_attribute_group);
input_unregister_device(atkbd->dev); input_unregister_device(atkbd->dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment