linux/sound/pci/hda
Takashi Iwai d289619a21 ALSA: hda - Fix deadlock at error in building PCM
The HDA codec driver issues snd_hda_codec_reset() at the error path of
PCM build.  This was needed in the earlier code base, but the recent
rewrite to use the standard bus binding made this a deadlock:
 modprobe        D 0000000000000005     0   720    716 0x00000080
 Call Trace:
  [<ffffffff816a5dbe>] schedule+0x3e/0x90
  [<ffffffff816a61a5>] schedule_preempt_disabled+0x15/0x20
  [<ffffffff816a7ae5>] __mutex_lock_slowpath+0xb5/0x120
  [<ffffffff816a7b6b>] mutex_lock+0x1b/0x30
  [<ffffffff8148656b>] device_release_driver+0x1b/0x30
  [<ffffffff81485c15>] bus_remove_device+0x105/0x180
  [<ffffffff814822b9>] device_del+0x139/0x260
  [<ffffffffa05e0ec5>] snd_hdac_device_unregister+0x25/0x30 [snd_hda_core]
  [<ffffffffa074fa6a>] snd_hda_codec_reset+0x2a/0x70 [snd_hda_codec]
  [<ffffffffa075007b>] snd_hda_codec_build_pcms+0x18b/0x1b0 [snd_hda_codec]
  [<ffffffffa074a44e>] hda_codec_driver_probe+0xbe/0x140 [snd_hda_codec]
  [<ffffffff81486ac4>] driver_probe_device+0x1f4/0x460
  [<ffffffff81486dc0>] __driver_attach+0x90/0xa0
  [<ffffffff81484844>] bus_for_each_dev+0x64/0xa0
  [<ffffffff814862de>] driver_attach+0x1e/0x20
  [<ffffffff81485e7b>] bus_add_driver+0x1eb/0x280
  [<ffffffff81487680>] driver_register+0x60/0xe0
  [<ffffffffa074a0da>] __hda_codec_driver_register+0x5a/0x60 [snd_hda_codec]
  [<ffffffffa070a01e>] realtek_driver_init+0x1e/0x1000 [snd_hda_codec_realtek]
  [<ffffffff810002f3>] do_one_initcall+0xb3/0x200
  [<ffffffff816a1fc5>] do_init_module+0x60/0x1f8
  [<ffffffff810ee5c3>] load_module+0x1653/0x1bd0
  [<ffffffff810eed48>] SYSC_finit_module+0x98/0xc0
  [<ffffffff810eed8e>] SyS_finit_module+0xe/0x10
  [<ffffffff816aa032>] entry_SYSCALL_64_fastpath+0x16/0x75

The simple fix is just to remove this call, since we don't need to
think about unbinding at there any longer.

Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=948758
Cc: <stable@vger.kernel.org> # v4.1+
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2015-10-20 16:31:34 +02:00
..
ca0132_regs.h ALSA: hda: ca0132_regs.h: Fix typo in include guard 2014-08-22 11:24:11 +02:00
dell_wmi_helper.c ALSA: hda - add mic mute led hook for dell machines 2014-07-31 09:21:42 +02:00
hda_auto_parser.c ALSA: hda - remove no physical connection pins from pin_quirk table 2015-08-03 10:16:20 +02:00
hda_auto_parser.h ALSA: hda - Sort input pins depending on amp caps 2014-09-23 15:57:32 +02:00
hda_beep.c ALSA: hda-beep: Update authors dead email address 2015-06-13 09:13:26 +02:00
hda_beep.h ALSA: hda-beep: Update authors dead email address 2015-06-20 09:24:40 +02:00
hda_bind.c ALSA: hda - Drop unused fields from struct hda_codec_preset 2015-05-28 14:46:55 +02:00
hda_codec.c ALSA: hda - Fix deadlock at error in building PCM 2015-10-20 16:31:34 +02:00
hda_codec.h ALSA: hda - Make some helper functions local 2015-08-17 15:10:15 +02:00
hda_controller.c ALSA: hda - rename hda_intel_trace.h to hda_controller_trace.h 2015-05-18 10:06:32 +02:00
hda_controller.h Merge branch 'topic/hda' into for-next 2015-04-29 12:28:52 +02:00
hda_controller_trace.h ALSA: hda - rename hda_intel_trace.h to hda_controller_trace.h 2015-05-18 10:06:32 +02:00
hda_eld.c ALSA: hda/eld - Add const to possible places 2015-08-17 15:12:14 +02:00
hda_generic.c ALSA: hda - Fix path power activation 2015-08-25 07:59:02 +02:00
hda_generic.h ALSA: hda - Fix power of pins used for mute LED with vrefs 2015-03-20 18:30:48 +01:00
hda_hwdep.c ALSA: hda - Add card field to hda_codec struct 2015-03-03 11:25:16 +01:00
hda_intel.c ALSA: hda - Fix race between PM ops and HDA init/probe 2015-07-29 19:37:26 +02:00
hda_intel.h ALSA: hda - Move hda_i915.c from sound/pci/hda to sound/hda 2015-05-20 06:16:36 +02:00
hda_intel_trace.h ALSA: hda - add hda_intel_trace.h 2015-05-18 10:06:44 +02:00
hda_jack.c ALSA: hda - Update to use the new jack kctls method 2015-04-27 21:37:42 +02:00
hda_jack.h ALSA: hda - Update to use the new jack kctls method 2015-04-27 21:37:42 +02:00
hda_local.h Merge branch 'for-linus' into for-next 2015-06-12 08:10:20 +02:00
hda_proc.c ALSA: hda/proc - Fix racy string access for power states 2015-08-17 15:12:04 +02:00
hda_sysfs.c ALSA: hda - Move a part of hda_codec stuff into hdac_device 2015-03-23 13:17:17 +01:00
hda_tegra.c ALSA: hda/tegra - async probe for avoiding module loading deadlock 2015-09-24 14:01:46 +02:00
Kconfig ALSA: HDAC: move SND_HDA_PREALLOC_SIZE to core 2015-06-16 17:40:38 +02:00
local.h ALSA: hda - Move a part of hda_codec stuff into hdac_device 2015-03-23 13:17:17 +01:00
Makefile ALSA: replace CONFIG_PROC_FS with CONFIG_SND_PROC_FS 2015-05-27 21:25:19 +02:00
patch_analog.c ALSA: hda - Set patch_ops before calling auto-parser 2015-05-29 10:42:14 +02:00
patch_ca0110.c ALSA: hda - Set patch_ops before calling auto-parser 2015-05-29 10:42:14 +02:00
patch_ca0132.c ALSA: hda - Fix pin config and mapping on Alienware 15 2015-08-10 16:53:32 +02:00
patch_cirrus.c ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 2015-10-03 10:32:49 +02:00
patch_cmedia.c ALSA: hda - Set patch_ops before calling auto-parser 2015-05-29 10:42:14 +02:00
patch_conexant.c ALSA: hda - Fix inverted internal mic on Lenovo G50-80 2015-10-13 11:34:33 +02:00
patch_hdmi.c drm/i915: Drop port_mst_index parameter from pin/eld callback 2015-09-03 12:09:03 +02:00
patch_realtek.c ALSA: hda: Add dock support for ThinkPad T550 2015-10-03 10:31:08 +02:00
patch_si3054.c ALSA: hda - Use regmap for command verb caches, too 2015-03-23 13:19:41 +01:00
patch_sigmatel.c ALSA: hda - Disable power_save_node for IDT 92HD73xx chips 2015-10-04 22:47:40 +02:00
patch_via.c ALSA: hda - Disable widget power-save for VIA codecs 2015-06-25 08:48:54 +02:00
thinkpad_helper.c Revert "ALSA: hda - Add mute-LED mode control to Thinkpad" 2015-05-24 08:32:37 +02:00