summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2010-03-22 08:30:20 +0100
committerTakashi Iwai <tiwai@suse.de>2010-03-22 08:30:20 +0100
commitbae84e70d66fe46c12231082cf1c4848ea22f3ef (patch)
treec0994ef3f0e306583c5619da8fd6498fd932dd24 /sound
parentea823c08912cfb6d4af2fa8b6dd5d8deb2fb486a (diff)
downloadlinux-bae84e70d66fe46c12231082cf1c4848ea22f3ef.tar.gz
linux-bae84e70d66fe46c12231082cf1c4848ea22f3ef.tar.bz2
linux-bae84e70d66fe46c12231082cf1c4848ea22f3ef.zip
ALSA: hda - Fix access-after-free in patch_realtek.c
alc_free_kctls() has to be called after all jobs done in alc_build_controls(). Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_realtek.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 4ec57633af88..053d53d8c8b2 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -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;
}