]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
ALSA: line6: Assure canceling delayed work at disconnection
authorTakashi Iwai <tiwai@suse.de>
Tue, 28 May 2019 06:39:44 +0000 (08:39 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 9 Jun 2019 07:16:12 +0000 (09:16 +0200)
commitcf02204f3c7ee56bece26630d67805fcc0891874
tree59237956e80001f719a6e697f02695af99361386
parente1801d51d673e1c9bbe0ded03bc9285f6d5a858d
ALSA: line6: Assure canceling delayed work at disconnection

commit 0b074ab7fc0d575247b9cc9f93bb7e007ca38840 upstream.

The current code performs the cancel of a delayed work at the late
stage of disconnection procedure, which may lead to the access to the
already cleared state.

This patch assures to call cancel_delayed_work_sync() at the beginning
of the disconnection procedure for avoiding that race.  The delayed
work object is now assigned in the common line6 object instead of its
derivative, so that we can call cancel_delayed_work_sync().

Along with the change, the startup function is called via the new
callback instead.  This will make it easier to port other LINE6
drivers to use the delayed work for startup in later patches.

Reported-by: syzbot+5255458d5e0a2b10bbb9@syzkaller.appspotmail.com
Fixes: 7f84ff68be05 ("ALSA: line6: toneport: Fix broken usage of timer for delayed execution")
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/usb/line6/driver.c
sound/usb/line6/driver.h
sound/usb/line6/toneport.c