Commit 18353192 authored by Takashi Iwai's avatar Takashi Iwai

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: default avatarTakashi Iwai <tiwai@suse.de>
parent 5def9019
...@@ -444,11 +444,12 @@ static void had_build_channel_allocation_map(struct snd_intelhad *intelhaddata) ...@@ -444,11 +444,12 @@ static void had_build_channel_allocation_map(struct snd_intelhad *intelhaddata)
u8 eld_high, eld_high_mask = 0xF0; u8 eld_high, eld_high_mask = 0xF0;
u8 high_msb; u8 high_msb;
kfree(intelhaddata->chmap->chmap);
intelhaddata->chmap->chmap = NULL;
chmap = kzalloc(sizeof(*chmap), GFP_KERNEL); chmap = kzalloc(sizeof(*chmap), GFP_KERNEL);
if (!chmap) { if (!chmap)
intelhaddata->chmap->chmap = NULL;
return; return;
}
dev_dbg(intelhaddata->dev, "eld speaker = %x\n", dev_dbg(intelhaddata->dev, "eld speaker = %x\n",
intelhaddata->eld[DRM_ELD_SPEAKER]); intelhaddata->eld[DRM_ELD_SPEAKER]);
...@@ -493,10 +494,8 @@ static void had_build_channel_allocation_map(struct snd_intelhad *intelhaddata) ...@@ -493,10 +494,8 @@ static void had_build_channel_allocation_map(struct snd_intelhad *intelhaddata)
break; break;
} }
} }
if (i >= ARRAY_SIZE(channel_allocations)) { if (i >= ARRAY_SIZE(channel_allocations))
intelhaddata->chmap->chmap = NULL;
kfree(chmap); kfree(chmap);
}
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment