linux/sound/usb
Takashi Iwai 4b36a914ae 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>
2014-12-16 09:09:43 -08:00
..
6fire ALSA: 6fire: Fix probe of multiple cards 2013-11-29 11:11:44 -08:00
caiaq ALSA: usb-audio: caiaq: fix endianness bug in snd_usb_caiaq_maschine_dispatch 2013-04-30 09:19:02 +02:00
misc ALSA: ua101: Fix unlocked snd_pcm_stop() call 2013-07-25 14:07:25 -07:00
usx2y ALSA: us122l: Fix pcm_usb_stream mmapping regression 2013-11-04 04:31:06 -08:00
card.c ALSA: usb-audio: work around Android accessory firmware bug 2013-06-17 09:56:52 +02:00
card.h ALSA: usb-audio: work around corrupted TEAC UD-H01 feedback data 2014-06-07 13:25:33 -07:00
clock.c ALSA: usb - Avoid unnecessary sample rate changes on USB 2.0 clock sources 2013-04-26 07:37:09 +02: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: work around corrupted TEAC UD-H01 feedback data 2014-06-07 13:25:33 -07:00
endpoint.h ALSA: usb-audio: spelling correction 2013-04-04 08:30:30 +02:00
format.c ALSA: pcm_format_to_bits strong-typed conversion 2013-04-29 13:36:15 +02:00
format.h ALSA: snd-usb: handle the bmFormats field as unsigned int 2013-03-18 08:47:04 +01:00
helper.c ALSA: snd-usb-audio: set the timeout for usb control set messages to 5000 ms 2013-04-22 10:45:02 +02:00
helper.h ALSA: usb-audio: increase control transfer timeout 2011-09-27 09:21:48 +02:00
Kconfig ALSA: usb-audio: Add missing kconfig dependecy 2014-02-20 11:06:11 -08:00
Makefile ALSA: snd-usb: move code from urb.c to endpoint.c 2011-09-14 17:07:03 +02:00
midi.c ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery 2014-12-16 09:09:43 -08:00
midi.h ALSA: usb-audio: add support for Akai MPD16 2010-05-21 17:12:30 +02:00
mixer_maps.c ALSA: usb-audio: work around KEF X300A firmware bug 2014-03-06 21:30:06 -08:00
mixer_quirks.c ALSA: usb-audio: Fix memory leak in FTU quirk 2014-11-21 09:22:52 -08:00
mixer_quirks.h ALSA: usb-mixer: factor out quirks 2010-03-12 12:20:26 +01:00
mixer.c ALSA: usb-audio: Add quirk for Logitech Webcam C500 2014-03-23 21:38:14 -07:00
mixer.h ALSA: usb-audio: add control index offset 2012-11-29 08:43:12 +01:00
pcm.c ALSA: usb-audio: Prevent printk ratelimiting from spamming kernel log while DEBUG not defined 2014-07-09 11:14:02 -07: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-30 09:35:13 -07:00
quirks.c ALSA: usb-audio: Add ctrl message delay quirk for Marantz/Denon devices 2014-12-06 15:05:48 -08:00
quirks.h ALSA: snd-usb: add quirks handler for DSD streams 2013-04-18 10:03:53 +02:00
stream.c ALSA: snd-usb: try harder to find USB_DT_CS_ENDPOINT 2013-04-25 07:33:20 +02:00
stream.h ALSA: snd-usb: re-order code 2011-09-14 17:07:02 +02:00
usbaudio.h ALSA: usb-audio: UAC2: auto clock selection module param 2013-04-04 08:31:32 +02:00