Takashi Iwai
92a586bdc0
ALSA: usb-audio: Fix races at disconnection and PCM closing
...
When a USB-audio device is disconnected while PCM is still running, we
still see some race: the disconnect callback calls
snd_usb_endpoint_free() that calls release_urbs() and then kfree()
while a PCM stream would be closed at the same time and calls
stop_endpoints() that leads to wait_clear_urbs(). That is, the EP
object might be deallocated while a PCM stream is syncing with
wait_clear_urbs() with the same EP.
Basically calling multiple wait_clear_urbs() would work fine, also
calling wait_clear_urbs() and release_urbs() would work, too, as
wait_clear_urbs() just reads some fields in ep. The problem is the
succeeding kfree() in snd_pcm_endpoint_free().
This patch moves out the EP deallocation into the later point, the
destructor callback. At this stage, all PCMs must have been already
closed, so it's safe to free the objects.
Reported-by: Alan Stern <stern@rowland.harvard.edu>
Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2014-06-26 10:33:35 +02: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: usb: Convert to snd_card_new() with a device pointer
2014-02-12 11:18:00 +01:00
hiface
ALSA: usb: Convert to snd_card_new() with a device pointer
2014-02-12 11:18:00 +01:00
misc
ALSA: usb: Convert to snd_card_new() with a device pointer
2014-02-12 11:18:00 +01:00
usx2y
ALSA: usx2y: Don't peep the card internal object
2014-02-17 10:16:25 +01:00
card.c
ALSA: usb-audio: Fix races at disconnection and PCM closing
2014-06-26 10:33:35 +02: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: Use standard printk helpers
2014-02-26 16:45:34 +01: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: Fix races at disconnection and PCM closing
2014-06-26 10:33:35 +02: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: Use standard printk helpers
2014-02-26 16:45:34 +01:00
midi.h
ALSA: usb-audio: add support for Akai MPD16
2010-05-21 17:12:30 +02:00
mixer.c
ALSA: snd-usb: mixer: remove error messages on failed kmalloc()
2014-05-25 09:09:01 +02:00
mixer.h
ALSA: usb-audio: Resume mixer values properly
2014-02-03 09:51:34 +01:00
mixer_maps.c
ALSA: usb-audio: work around KEF X300A firmware bug
2014-02-17 10:11:54 +01:00
mixer_quirks.c
ALSA: usb-audio: Use standard printk helpers
2014-02-26 16:45:34 +01:00
mixer_quirks.h
pcm.c
ALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log while DEBUG not defined
2014-05-02 18:10:59 +02: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: proc: use found syncmaxsize to determine feedback format
2013-05-17 08:05:34 +02:00
proc.h
quirks-table.h
ALSA: snd-usb: re-order some quirk entries
2014-01-14 14:40:08 +01:00
quirks.c
ALSA: usb-audio: Use standard printk helpers
2014-02-26 16:45:34 +01: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: Use standard printk helpers
2014-02-26 16:45:34 +01:00
stream.h
ALSA: snd-usb: re-order code
2011-09-14 17:07:02 +02:00
usbaudio.h
ALSA: usb-audio: Fix deadlocks at resuming
2014-05-02 18:17:06 +02:00