|
@@ -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));
|