diff options
author | Wei Yongjun <yongjun_wei@trendmicro.com.cn> | 2012-09-02 22:10:27 +0800 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-09-03 10:08:28 +0200 |
commit | 1f3b14072bacc80d62597ed7798e3daf7615dcc6 (patch) | |
tree | a848225ed17cd84c6c3eecb0c16e7d4e12bb457f /sound/core | |
parent | a03e4a66c71b2bb33dc795eb6451a3d2ad1398bb (diff) |
ALSA: fix possible memory leak in snd_mixer_oss_build_input()
uinfo has been allocated in this function and should be
freed before leaving from the error handling cases.
spatch with a semantic match is used to found this problem.
(http://coccinelle.lip6.fr/)
Signed-off-by: Wei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core')
-rw-r--r-- | sound/core/oss/mixer_oss.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sound/core/oss/mixer_oss.c b/sound/core/oss/mixer_oss.c index 18297f7f2c55..29f6ded02555 100644 --- a/sound/core/oss/mixer_oss.c +++ b/sound/core/oss/mixer_oss.c @@ -1046,6 +1046,7 @@ static int snd_mixer_oss_build_input(struct snd_mixer_oss *mixer, struct snd_mix if (kctl->info(kctl, uinfo)) { up_read(&mixer->card->controls_rwsem); + kfree(uinfo); return 0; } strcpy(str, ptr->name); @@ -1061,6 +1062,7 @@ static int snd_mixer_oss_build_input(struct snd_mixer_oss *mixer, struct snd_mix uinfo->value.enumerated.item = slot.capture_item; if (kctl->info(kctl, uinfo)) { up_read(&mixer->card->controls_rwsem); + kfree(uinfo); return 0; } if (!strcmp(uinfo->value.enumerated.name, str)) { |