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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);