linux/sound/usb
Hui Peng 1c38b9d9e7 ALSA: usb-audio: Fix UAF decrement if card has no live interfaces in card.c
commit 5f8cf71258 upstream.

If a USB sound card reports 0 interfaces, an error condition is triggered
and the function usb_audio_probe errors out. In the error path, there was a
use-after-free vulnerability where the memory object of the card was first
freed, followed by a decrement of the number of active chips. Moving the
decrement above the atomic_dec fixes the UAF.

[ The original problem was introduced in 3.1 kernel, while it was
  developed in a different form.  The Fixes tag below indicates the
  original commit but it doesn't mean that the patch is applicable
  cleanly. -- tiwai ]

Fixes: 362e4e49ab ("ALSA: usb-audio - clear chip->probing on error exit")
Reported-by: Hui Peng <benquike@gmail.com>
Reported-by: Mathias Payer <mathias.payer@nebelwelt.net>
Signed-off-by: Hui Peng <benquike@gmail.com>
Signed-off-by: Mathias Payer <mathias.payer@nebelwelt.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2019-02-11 17:54:17 +00:00
..
6fire ALSA: 6fire: Use standard printk helpers 2014-02-26 17:22:09 +01:00
bcd2000 ALSA: MIDI driver for Behringer BCD2000 USB device 2014-04-07 16:05:41 +02:00
caiaq ALSA: caiaq: Fix stray URB at probe error path 2018-01-01 20:51:51 +00:00
hiface ALSA: hiface: Fix M2Tech hiFace driver sampling rate change 2017-03-16 02:26:34 +00:00
misc ALSA: usb: Convert to snd_card_new() with a device pointer 2014-02-12 11:18:00 +01:00
usx2y ALSA: usx2y: Suppress kernel warning at page allocation failures 2018-01-01 20:51:46 +00:00
card.c ALSA: usb-audio: Fix UAF decrement if card has no live interfaces in card.c 2019-02-11 17:54:17 +00:00
card.h ALSA: usb-audio: work around corrupted TEAC UD-H01 feedback data 2014-05-02 18:21:55 +02:00
clock.c ALSA: usb-audio: Add sanity checks in v2 clock parsers 2018-02-13 18:42:28 +00:00
clock.h ALSA: usb-audio: UAC2: do clock validity check earlier 2013-04-04 08:30:59 +02:00
debug.h ALSA: usb-audio: make hwc_debug a noop in case HW_CONST_DEBUG is not set 2011-05-18 11:44:35 +02:00
endpoint.c ALSA: usb-audio: Avoid nested autoresume calls 2019-02-11 17:54:17 +00:00
endpoint.h ALSA: usb-audio: Fix races at disconnection and PCM closing 2014-06-26 10:33:35 +02:00
format.c ALSA: usb-audio: Use standard printk helpers 2014-02-26 16:45:34 +01:00
format.h ALSA: usb-audio: store protocol version in struct audioformat 2013-06-27 21:59:47 +02:00
helper.c ALSA: usb-audio: support wireless devices in snd_usb_parse_datainterval 2013-10-07 12:52:21 +02:00
helper.h ALSA: usb-audio: increase control transfer timeout 2011-09-27 09:21:48 +02:00
Kconfig ALSA: MIDI driver for Behringer BCD2000 USB device 2014-04-07 16:05:41 +02:00
Makefile ALSA: MIDI driver for Behringer BCD2000 USB device 2014-04-07 16:05:41 +02:00
midi.c ALSA: usb-audio: avoid freeing umidi object twice 2016-02-16 10:55:28 +00:00
midi.h ALSA: usb-audio: add support for Akai MPD16 2010-05-21 17:12:30 +02:00
mixer.c ALSA: usb-audio: Avoid nested autoresume calls 2019-02-11 17:54:17 +00:00
mixer.h ALSA: usb-audio: Kill stray URB at exiting 2017-11-11 13:33:39 +00:00
mixer_maps.c ALSA: usb-audio: Skip broken EU on Dell dock USB-audio 2018-10-21 08:45:40 +01:00
mixer_quirks.c ALSA: usb-audio: Avoid nested autoresume calls 2019-02-11 17:54:17 +00:00
mixer_quirks.h ALSA: usb-audio: Add a more accurate volume quirk for AudioQuest DragonFly 2016-01-25 10:43:38 +00:00
pcm.c ALSA: usb-audio: Avoid nested autoresume calls 2019-02-11 17:54:17 +00:00
pcm.h ALSA: usb: refine delay information with USB frame counter 2011-09-12 10:30:20 +02:00
power.h ALSA: usbaudio: implement USB autosuspend 2011-03-11 14:59:29 +01:00
proc.c ALSA: usb-audio: Avoid nested autoresume calls 2019-02-11 17:54:17 +00:00
proc.h ALSA: usb-audio: refactor code 2010-03-05 08:17:14 +01:00
quirks-table.h ALSA: usb-audio: update quirk for B&W PX to remove microphone 2019-02-11 17:53:27 +00:00
quirks.c ALSA: usb-audio: Fix double-free in error paths after snd_usb_add_audio_stream() call 2016-05-01 00:06:06 +02:00
quirks.h ALSA: snd-usb: add quirks handler for DSD streams 2013-04-18 10:03:53 +02:00
stream.c ALSA: usb-audio: Fix double-free in error paths after snd_usb_add_audio_stream() call 2016-05-01 00:06:06 +02:00
stream.h ALSA: snd-usb: re-order code 2011-09-14 17:07:02 +02:00
usbaudio.h ALSA: usb-audio: Replace probing flag with active refcount 2019-02-11 17:54:17 +00:00