diff options
author | Alexey Dobriyan <adobriyan@gmail.com> | 2006-03-06 07:21:30 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-03-22 04:34:50 -0500 |
commit | ac57b84984859f3e1d567c031556d3de872c1a91 (patch) | |
tree | 28f253e63b2d136db78f9ff115ab5e8d6f1fbbdc /sound/drivers/vx/vx_pcm.c | |
parent | 1037593c8be9551d5a7835703bcaf6073ffb7ec2 (diff) |
[ALSA] vx - Fix memory leak on error path
Modules: Digigram VX core
Noticed by Eric Sesterhenn on kernel-janitors@
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/drivers/vx/vx_pcm.c')
-rw-r--r-- | sound/drivers/vx/vx_pcm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/drivers/vx/vx_pcm.c b/sound/drivers/vx/vx_pcm.c index 2195e25087b4..c4af84995d05 100644 --- a/sound/drivers/vx/vx_pcm.c +++ b/sound/drivers/vx/vx_pcm.c | |||
@@ -1253,9 +1253,13 @@ static int vx_init_audio_io(struct vx_core *chip) | |||
1253 | 1253 | ||
1254 | /* allocate pipes */ | 1254 | /* allocate pipes */ |
1255 | chip->playback_pipes = kmalloc(sizeof(struct vx_pipe *) * chip->audio_outs, GFP_KERNEL); | 1255 | chip->playback_pipes = kmalloc(sizeof(struct vx_pipe *) * chip->audio_outs, GFP_KERNEL); |
1256 | if (!chip->playback_pipes) | ||
1257 | return -ENOMEM; | ||
1256 | chip->capture_pipes = kmalloc(sizeof(struct vx_pipe *) * chip->audio_ins, GFP_KERNEL); | 1258 | chip->capture_pipes = kmalloc(sizeof(struct vx_pipe *) * chip->audio_ins, GFP_KERNEL); |
1257 | if (! chip->playback_pipes || ! chip->capture_pipes) | 1259 | if (!chip->capture_pipes) { |
1260 | kfree(chip->playback_pipes); | ||
1258 | return -ENOMEM; | 1261 | return -ENOMEM; |
1262 | } | ||
1259 | 1263 | ||
1260 | memset(chip->playback_pipes, 0, sizeof(struct vx_pipe *) * chip->audio_outs); | 1264 | memset(chip->playback_pipes, 0, sizeof(struct vx_pipe *) * chip->audio_outs); |
1261 | memset(chip->capture_pipes, 0, sizeof(struct vx_pipe *) * chip->audio_ins); | 1265 | memset(chip->capture_pipes, 0, sizeof(struct vx_pipe *) * chip->audio_ins); |