diff options
author | Takashi Iwai <tiwai@suse.de> | 2020-07-10 15:59:59 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2020-07-10 16:29:38 +0200 |
commit | 68359a1ad8447c99732ebeab8c169bfed543667a (patch) | |
tree | e83e56ebc267193094821fc7646fb7175231d5e8 /sound/usb/line6 | |
parent | 6e8a914ad619042c5f25a4feb663357c4170fd8d (diff) |
ALSA: line6: Sync the pending work cancel at disconnection
Recently syzkaller reported a UAF in LINE6 driver, and it's likely
because we call cancel_delayed_work() at the disconnect callback
instead of cancel_delayed_work_sync(). Let's use the correct one
instead.
Reported-by: syzbot+145012a46658ac00fc9e@syzkaller.appspotmail.com
Suggested-by: Alan Stern <stern@rowland.harvard.edu>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/s5hlfjr4gio.wl-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/line6')
-rw-r--r-- | sound/usb/line6/driver.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/usb/line6/driver.c b/sound/usb/line6/driver.c index 7629116f570e..2746d9698180 100644 --- a/sound/usb/line6/driver.c +++ b/sound/usb/line6/driver.c @@ -840,7 +840,7 @@ void line6_disconnect(struct usb_interface *interface) if (WARN_ON(usbdev != line6->usbdev)) return; - cancel_delayed_work(&line6->startup_work); + cancel_delayed_work_sync(&line6->startup_work); if (line6->urb_listen != NULL) line6_stop_listen(line6); |