ALSA: memalloc: Initialize all fields of snd_dma_buffer properly
authorTakashi Iwai <tiwai@suse.de>
Mon, 15 Jun 2020 16:00:43 +0000 (18:00 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 15 Jun 2020 16:01:42 +0000 (18:01 +0200)
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>
sound/core/memalloc.c

index bea46ed..d8f28d0 100644 (file)
@@ -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)