From 18353192b8f696a27420e2e8f39804c2075f26fb Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Wed, 15 Feb 2017 21:42:20 +0100 Subject: [PATCH] ALSA: x86: Fix memory leak in had_build_channel_allocation_map() The previously allocated chmap has to be released before setting the new one. Signed-off-by: Takashi Iwai --- sound/x86/intel_hdmi_audio.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sound/x86/intel_hdmi_audio.c b/sound/x86/intel_hdmi_audio.c index a7343f2d2730..5f2445389716 100644 --- a/sound/x86/intel_hdmi_audio.c +++ b/sound/x86/intel_hdmi_audio.c @@ -444,11 +444,12 @@ static void had_build_channel_allocation_map(struct snd_intelhad *intelhaddata) u8 eld_high, eld_high_mask = 0xF0; u8 high_msb; + kfree(intelhaddata->chmap->chmap); + intelhaddata->chmap->chmap = NULL; + chmap = kzalloc(sizeof(*chmap), GFP_KERNEL); - if (!chmap) { - intelhaddata->chmap->chmap = NULL; + if (!chmap) return; - } dev_dbg(intelhaddata->dev, "eld speaker = %x\n", intelhaddata->eld[DRM_ELD_SPEAKER]); @@ -493,10 +494,8 @@ static void had_build_channel_allocation_map(struct snd_intelhad *intelhaddata) break; } } - if (i >= ARRAY_SIZE(channel_allocations)) { - intelhaddata->chmap->chmap = NULL; + if (i >= ARRAY_SIZE(channel_allocations)) kfree(chmap); - } } /* -- 2.20.1