ALSA: PCM: Fix NULL dereference at mmap checks
authorTakashi Iwai <tiwai@suse.de>
Sun, 7 Nov 2021 16:39:11 +0000 (17:39 +0100)
committerTakashi Iwai <tiwai@suse.de>
Sun, 7 Nov 2021 16:55:05 +0000 (17:55 +0100)
The recent refactoring of mmap handling caused Oops on some devices
that don't use the standard memory allocations.  This patch addresses
it by allowing snd_dma_buffer_mmap() helper to receive the NULL
pointer dmab argument (and return an error appropriately).

Fixes: a202bd1ad86d ("ALSA: core: Move mmap handler into memalloc ops")
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20211107163911.13534-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/memalloc.c

index ea9698c..ad4a76b 100644 (file)
@@ -183,8 +183,11 @@ EXPORT_SYMBOL_GPL(snd_devm_alloc_dir_pages);
 int snd_dma_buffer_mmap(struct snd_dma_buffer *dmab,
                        struct vm_area_struct *area)
 {
-       const struct snd_malloc_ops *ops = snd_dma_get_ops(dmab);
+       const struct snd_malloc_ops *ops;
 
+       if (!dmab)
+               return -ENOENT;
+       ops = snd_dma_get_ops(dmab);
        if (ops && ops->mmap)
                return ops->mmap(dmab, area);
        else