diff options
author | Takashi Iwai <tiwai@suse.de> | 2020-06-15 18:00:43 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2020-06-15 18:01:42 +0200 |
commit | 28e60dbb83f76b18acade913dfdb029cd908c9b0 (patch) | |
tree | fc8191cf2feb2257a8ee5fe85b9d34a1dee4cfab /sound | |
parent | d955dab33af4ebff0f6c486da216ebbf590eb7e4 (diff) | |
download | linux-28e60dbb83f76b18acade913dfdb029cd908c9b0.tar.bz2 |
ALSA: memalloc: Initialize all fields of snd_dma_buffer properly
Some fields in snd_dma_buffer aren't touched in snd_dma_alloc_pages()
and might be left uninitialized. Let's clear all fields properly, so
that we can use a NULL check (e.g. dmab->private_data) as conditional
in a later patch.
Link: https://lore.kernel.org/r/20200615160045.2703-3-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/core/memalloc.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c index bea46ed157a6..d8f28d030985 100644 --- a/sound/core/memalloc.c +++ b/sound/core/memalloc.c @@ -135,16 +135,17 @@ int snd_dma_alloc_pages(int type, struct device *device, size_t size, dmab->dev.type = type; dmab->dev.dev = device; dmab->bytes = 0; + dmab->area = NULL; + dmab->addr = 0; + dmab->private_data = NULL; switch (type) { case SNDRV_DMA_TYPE_CONTINUOUS: gfp = snd_mem_get_gfp_flags(device, GFP_KERNEL); dmab->area = alloc_pages_exact(size, gfp); - dmab->addr = 0; break; case SNDRV_DMA_TYPE_VMALLOC: gfp = snd_mem_get_gfp_flags(device, GFP_KERNEL | __GFP_HIGHMEM); dmab->area = __vmalloc(size, gfp); - dmab->addr = 0; break; #ifdef CONFIG_HAS_DMA #ifdef CONFIG_GENERIC_ALLOCATOR @@ -171,8 +172,6 @@ int snd_dma_alloc_pages(int type, struct device *device, size_t size, #endif default: pr_err("snd-malloc: invalid device type %d\n", type); - dmab->area = NULL; - dmab->addr = 0; return -ENXIO; } if (! dmab->area) |