ALSA: allocation may fail in snd_pcm_oss_change_params()
authorRoel Kluin <roel.kluin@gmail.com>
Mon, 31 Aug 2009 14:32:12 +0000 (16:32 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 31 Aug 2009 14:33:23 +0000 (16:33 +0200)
Allocation may fail, show if it did.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
[Additional fix for invalid runtime->oss.prepare flag set by tiwai]
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/oss/pcm_oss.c

index dbe406b82591058dd515686d8d13eb800418b416..d35d61b3292ced461a1aa63f0f755a072324e840 100644 (file)
@@ -1043,10 +1043,15 @@ static int snd_pcm_oss_change_params(struct snd_pcm_substream *substream)
        runtime->oss.channels = params_channels(params);
        runtime->oss.rate = params_rate(params);
 
-       runtime->oss.params = 0;
-       runtime->oss.prepare = 1;
        vfree(runtime->oss.buffer);
        runtime->oss.buffer = vmalloc(runtime->oss.period_bytes);
+       if (!runtime->oss.buffer) {
+               err = -ENOMEM;
+               goto failure;
+       }
+
+       runtime->oss.params = 0;
+       runtime->oss.prepare = 1;
        runtime->oss.buffer_used = 0;
        if (runtime->dma_area)
                snd_pcm_format_set_silence(runtime->format, runtime->dma_area, bytes_to_samples(runtime, runtime->dma_bytes));