| From 6e8a914ad619042c5f25a4feb663357c4170fd8d Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Fri, 10 Jul 2020 15:33:51 +0200 |
| Subject: ALSA: line6: Perform sanity check for each URB creation |
| |
| From: Takashi Iwai <tiwai@suse.de> |
| |
| commit 6e8a914ad619042c5f25a4feb663357c4170fd8d upstream. |
| |
| LINE6 drivers create stream URBs with a fixed pipe without checking |
| its validity, and this may lead to a kernel WARNING at the submission |
| when a malformed USB descriptor is passed. |
| |
| For avoiding the kernel warning, perform the similar sanity checks for |
| each pipe type at creating a URB. |
| |
| Reported-by: syzbot+c190f6858a04ea7fbc52@syzkaller.appspotmail.com |
| Cc: <stable@vger.kernel.org> |
| Link: https://lore.kernel.org/r/s5hv9iv4hq8.wl-tiwai@suse.de |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/usb/line6/capture.c | 2 ++ |
| sound/usb/line6/playback.c | 2 ++ |
| 2 files changed, 4 insertions(+) |
| |
| --- a/sound/usb/line6/capture.c |
| +++ b/sound/usb/line6/capture.c |
| @@ -291,6 +291,8 @@ int line6_create_audio_in_urbs(struct sn |
| urb->interval = LINE6_ISO_INTERVAL; |
| urb->error_count = 0; |
| urb->complete = audio_in_callback; |
| + if (usb_urb_ep_type_check(urb)) |
| + return -EINVAL; |
| } |
| |
| return 0; |
| --- a/sound/usb/line6/playback.c |
| +++ b/sound/usb/line6/playback.c |
| @@ -436,6 +436,8 @@ int line6_create_audio_out_urbs(struct s |
| urb->interval = LINE6_ISO_INTERVAL; |
| urb->error_count = 0; |
| urb->complete = audio_out_callback; |
| + if (usb_urb_ep_type_check(urb)) |
| + return -EINVAL; |
| } |
| |
| return 0; |