ALSA: hda - Fix missing beep detach in patch_conexant.c
authorTakashi Iwai <tiwai@suse.de>
Sun, 17 Mar 2013 09:23:40 +0000 (10:23 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 18 Mar 2013 09:06:41 +0000 (10:06 +0100)
This leaks the beep input device after module unload, which leads to
Oops.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=55321
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_conexant.c

index 941bf6c766ecf5f6ff2aa35e28e33563066c58ef..1051a88f5304ef47ffe9ba1e0a3050e23a39edf6 100644 (file)
@@ -3191,11 +3191,17 @@ static int cx_auto_build_controls(struct hda_codec *codec)
        return 0;
 }
 
+static void cx_auto_free(struct hda_codec *codec)
+{
+       snd_hda_detach_beep_device(codec);
+       snd_hda_gen_free(codec);
+}
+
 static const struct hda_codec_ops cx_auto_patch_ops = {
        .build_controls = cx_auto_build_controls,
        .build_pcms = snd_hda_gen_build_pcms,
        .init = snd_hda_gen_init,
-       .free = snd_hda_gen_free,
+       .free = cx_auto_free,
        .unsol_event = snd_hda_jack_unsol_event,
 #ifdef CONFIG_PM
        .check_power_status = snd_hda_gen_check_power_status,