diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2011-11-16 16:29:46 +0800 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2011-11-16 10:44:21 +0100 |
commit | b95d68b8179764e29558b75cec35ef4a6a98925b (patch) | |
tree | 875fb72efe3cefea4df2bb37404dd32590666065 /sound/pci/hda/hda_eld.c | |
parent | e53de8f00c80fd1a312c95bc5157fdb98d46e070 (diff) | |
download | op-kernel-dev-b95d68b8179764e29558b75cec35ef4a6a98925b.zip op-kernel-dev-b95d68b8179764e29558b75cec35ef4a6a98925b.tar.gz |
ALSA: hda - fix ELD memory leak
memset(eld) clears eld->proc_entry which will leak the struct
snd_info_entry when unloading module.
Fix it by
- memset only the fields before eld->eld_buffer
- set eld->eld_valid to true _after_ all eld fields have been filled
Cc: <stable@kernel.org>
Cc: Pierre-louis Bossart <pierre-louis.bossart@intel.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_eld.c')
-rw-r--r-- | sound/pci/hda/hda_eld.c | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/sound/pci/hda/hda_eld.c b/sound/pci/hda/hda_eld.c index 1c8ddf5..a065d6d 100644 --- a/sound/pci/hda/hda_eld.c +++ b/sound/pci/hda/hda_eld.c @@ -297,10 +297,10 @@ static int hdmi_update_eld(struct hdmi_eld *e, buf + ELD_FIXED_BYTES + mnl + 3 * i); } + e->eld_valid = true; return 0; out_fail: - e->eld_ver = 0; return -EINVAL; } @@ -323,9 +323,6 @@ int snd_hdmi_get_eld(struct hdmi_eld *eld, * ELD is valid, actual eld_size is assigned in hdmi_update_eld() */ - if (!eld->eld_valid) - return -ENOENT; - size = snd_hdmi_get_eld_size(codec, nid); if (size == 0) { /* wfg: workaround for ASUS P5E-VM HDMI board */ |