Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+3 -4
+3 -4
sound/core/memalloc.c
··· 135 135 dmab->dev.type = type; 136 136 dmab->dev.dev = device; 137 137 dmab->bytes = 0; 138 + dmab->area = NULL; 139 + dmab->addr = 0; 140 + dmab->private_data = NULL; 138 141 switch (type) { 139 142 case SNDRV_DMA_TYPE_CONTINUOUS: 140 143 gfp = snd_mem_get_gfp_flags(device, GFP_KERNEL); 141 144 dmab->area = alloc_pages_exact(size, gfp); 142 - dmab->addr = 0; 143 145 break; 144 146 case SNDRV_DMA_TYPE_VMALLOC: 145 147 gfp = snd_mem_get_gfp_flags(device, GFP_KERNEL | __GFP_HIGHMEM); 146 148 dmab->area = __vmalloc(size, gfp); 147 - dmab->addr = 0; 148 149 break; 149 150 #ifdef CONFIG_HAS_DMA 150 151 #ifdef CONFIG_GENERIC_ALLOCATOR ··· 172 171 #endif 173 172 default: 174 173 pr_err("snd-malloc: invalid device type %d\n", type); 175 - dmab->area = NULL; 176 - dmab->addr = 0; 177 174 return -ENXIO; 178 175 } 179 176 if (! dmab->area)