sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer

When allocating the PCM buffer, use vmalloc_user() instead of vmalloc().
Otherwise, it would be possible for applications to play the previous
contents of the kernel memory to the speakers, or to read it directly if
the buffer is exported to userspace.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Cc: <stable@kernel.org>

Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Clemens Ladisch 2009-12-18 09:27:24 +01:00 committed by Takashi Iwai
parent 2fbe74b90b
commit 3e85fd614c
3 changed files with 3 additions and 3 deletions

View file

@ -609,7 +609,7 @@ static int snd_sgio2audio_pcm_hw_params(struct snd_pcm_substream *substream,
/* alloc virtual 'dma' area */ /* alloc virtual 'dma' area */
if (runtime->dma_area) if (runtime->dma_area)
vfree(runtime->dma_area); vfree(runtime->dma_area);
runtime->dma_area = vmalloc(size); runtime->dma_area = vmalloc_user(size);
if (runtime->dma_area == NULL) if (runtime->dma_area == NULL)
return -ENOMEM; return -ENOMEM;
runtime->dma_bytes = size; runtime->dma_bytes = size;

View file

@ -51,7 +51,7 @@ static int snd_pcm_alloc_vmalloc_buffer(struct snd_pcm_substream *subs, size_t s
return 0; /* already enough large */ return 0; /* already enough large */
vfree(runtime->dma_area); vfree(runtime->dma_area);
} }
runtime->dma_area = vmalloc_32(size); runtime->dma_area = vmalloc_32_user(size);
if (! runtime->dma_area) if (! runtime->dma_area)
return -ENOMEM; return -ENOMEM;
runtime->dma_bytes = size; runtime->dma_bytes = size;

View file

@ -752,7 +752,7 @@ static int snd_pcm_alloc_vmalloc_buffer(struct snd_pcm_substream *subs, size_t s
return 0; /* already large enough */ return 0; /* already large enough */
vfree(runtime->dma_area); vfree(runtime->dma_area);
} }
runtime->dma_area = vmalloc(size); runtime->dma_area = vmalloc_user(size);
if (!runtime->dma_area) if (!runtime->dma_area)
return -ENOMEM; return -ENOMEM;
runtime->dma_bytes = size; runtime->dma_bytes = size;