diff mbox

[ALSA/hda] kernel BUG at drivers/base/driver.c:152!

Message ID s5htwxu9wuj.wl-tiwai@suse.de (mailing list archive)
State New, archived
Headers show

Commit Message

Takashi Iwai March 9, 2015, 12:30 p.m. UTC
At Sat, 7 Mar 2015 18:58:44 +0800,
Fengguang Wu wrote:
> 
> Greetings,
> 
> 0day kernel testing robot got the below dmesg and the first bad commit is
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git topic/hda-regmap
> 
> commit 3103d80b8a89f1797e87d7265f9b389a0db4ccd8
> Author:     Takashi Iwai <tiwai@suse.de>
> AuthorDate: Tue Feb 17 21:46:37 2015 +0100
> Commit:     Takashi Iwai <tiwai@suse.de>
> CommitDate: Tue Mar 3 14:35:44 2015 +0100
> 
>     ALSA: hda - Make snd_hda_bus_type public
>     
>     Define the common hd-audio driver and device types to bind over
>     snd_hda_bus_type publicly.  This allows to implement other type of
>     device and driver code over hd-audio bus.
>     
>     Now both struct hda_codec and struct hda_codec_driver inherit these
>     new struct hdac_device and struct hdac_driver, respectively.
>     
>     Signed-off-by: Takashi Iwai <tiwai@suse.de>

Fixed by the patch below now.  Thanks!


Takashi

-- 8< --
From: Takashi Iwai <tiwai@suse.de>
Subject: [PATCH] ALSA: hda - Fix panic at booting with built-in HDA driver

The split of hdaudio bus type caused a kernel panic at booting when
the HD-audio driver is built into kernel, because of the insufficient
init call order.

This patch changes the module_init() to subsys_initcall() to assure
the bus type registration done before any other driver registrations.

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
---
 sound/hda/hda_bus_type.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff mbox

Patch

diff --git a/sound/hda/hda_bus_type.c b/sound/hda/hda_bus_type.c
index 996515c6a248..519914a12e8a 100644
--- a/sound/hda/hda_bus_type.c
+++ b/sound/hda/hda_bus_type.c
@@ -38,5 +38,5 @@  static void __exit hda_bus_exit(void)
 	bus_unregister(&snd_hda_bus_type);
 }
 
-module_init(hda_bus_init);
+subsys_initcall(hda_bus_init);
 module_exit(hda_bus_exit);