ALSA: hda - Fix access-after-free in patch_realtek.c
authorTakashi Iwai <tiwai@suse.de>
Mon, 22 Mar 2010 07:30:20 +0000 (08:30 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 22 Mar 2010 07:30:20 +0000 (08:30 +0100)
alc_free_kctls() has to be called after all jobs done in alc_build_controls().

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_realtek.c

index 4ec57633af88efb14ce5a632d2dbf1c67d91b7cf..053d53d8c8b2d39f9e489c7d47b4a4b73f57a2cf 100644 (file)
@@ -2532,8 +2532,6 @@ static int alc_build_controls(struct hda_codec *codec)
                        return err;
        }
 
-       alc_free_kctls(codec); /* no longer needed */
-
        /* assign Capture Source enums to NID */
        kctl = snd_hda_find_mixer_ctl(codec, "Capture Source");
        if (!kctl)
@@ -2602,6 +2600,9 @@ static int alc_build_controls(struct hda_codec *codec)
                        }
                }
        }
+
+       alc_free_kctls(codec); /* no longer needed */
+
        return 0;
 }