linux/sound/usb
Takashi Iwai 72e9a6c522 ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery
commit 66139a48ce upstream.

In snd_usbmidi_error_timer(), the driver tries to resubmit MIDI input
URBs to reactivate the MIDI stream, but this causes the error when
some of URBs are still pending like:

 WARNING: CPU: 0 PID: 0 at ../drivers/usb/core/urb.c:339 usb_submit_urb+0x5f/0x70()
 URB ef705c40 submitted while active
 CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.16.6-2-desktop #1
 Hardware name: FOXCONN TPS01/TPS01, BIOS 080015  03/23/2010
  c0984bfa f4009ed4 c078deaf f4009ee4 c024c884 c09a135c f4009f00 00000000
  c0984bfa 00000153 c061ac4f c061ac4f 00000009 00000001 ef705c40 e854d1c0
  f4009eec c024c8d3 00000009 f4009ee4 c09a135c f4009f00 f4009f04 c061ac4f
 Call Trace:
  [<c0205df6>] try_stack_unwind+0x156/0x170
  [<c020482a>] dump_trace+0x5a/0x1b0
  [<c0205e56>] show_trace_log_lvl+0x46/0x50
  [<c02049d1>] show_stack_log_lvl+0x51/0xe0
  [<c0205eb7>] show_stack+0x27/0x50
  [<c078deaf>] dump_stack+0x45/0x65
  [<c024c884>] warn_slowpath_common+0x84/0xa0
  [<c024c8d3>] warn_slowpath_fmt+0x33/0x40
  [<c061ac4f>] usb_submit_urb+0x5f/0x70
  [<f7974104>] snd_usbmidi_submit_urb+0x14/0x60 [snd_usbmidi_lib]
  [<f797483a>] snd_usbmidi_error_timer+0x6a/0xa0 [snd_usbmidi_lib]
  [<c02570c0>] call_timer_fn+0x30/0x130
  [<c0257442>] run_timer_softirq+0x1c2/0x260
  [<c0251493>] __do_softirq+0xc3/0x270
  [<c0204732>] do_softirq_own_stack+0x22/0x30
  [<c025186d>] irq_exit+0x8d/0xa0
  [<c0795228>] smp_apic_timer_interrupt+0x38/0x50
  [<c0794a3c>] apic_timer_interrupt+0x34/0x3c
  [<c0673d9e>] cpuidle_enter_state+0x3e/0xd0
  [<c028bb8d>] cpu_idle_loop+0x29d/0x3e0
  [<c028bd23>] cpu_startup_entry+0x53/0x60
  [<c0bfac1e>] start_kernel+0x415/0x41a

For avoiding these errors, check the pending URBs and skip
resubmitting such ones.

Reported-and-tested-by: Stefan Seyfried <stefan.seyfried@googlemail.com>
Acked-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2014-12-16 09:39:07 -08: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: caiaq: check for cdev->n_streams > 1 2014-10-07 14:34:25 +02: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 device_del() sysfs warnings at disconnect 2014-11-05 15:36:25 +01: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: Don't resubmit pending URBs at MIDI error recovery 2014-12-16 09:39:07 -08:00
midi.h ALSA: usb-audio: Whitespace cleanups for sound/usb/midi.* 2014-08-05 20:08:00 +02:00
mixer.c ALSA: usb-audio: Set the Control Selector to SU_SELECTOR_CONTROL for UAC2 2014-11-17 14:01:24 +01: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 snd_usb_ctl_msg() for Native Instruments quirk 2014-11-20 21:44:49 +01:00
mixer_quirks.h ALSA: usb-mixer: factor out quirks 2010-03-12 12:20:26 +01:00
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 ALSA: usb-audio: refactor code 2010-03-05 08:17:14 +01:00
quirks-table.h ALSA: usb-audio: Add support for Steinberg UR22 USB interface 2014-10-20 07:54:42 +02:00
quirks.c ALSA: pcm: Add big-endian DSD sample formats and fix XMOS DSD sample format 2014-11-21 15:13:28 +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