summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2021-11-07 17:39:11 +0100
committerTakashi Iwai <tiwai@suse.de>2021-11-07 17:55:05 +0100
commit8e537d5dec34cac746dd6abf6a83e5de3aa471fc (patch)
treed7bb2596181b3e1555715c762b233bf3bd3e55ca
parent4fad4fb9871b43389e4f4bead18ec693064697bb (diff)
downloadlinux-8e537d5dec34cac746dd6abf6a83e5de3aa471fc.tar.bz2
ALSA: PCM: Fix NULL dereference at mmap checks
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>
-rw-r--r--sound/core/memalloc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c
index ea9698cea2e3..ad4a76b47b92 100644
--- a/sound/core/memalloc.c
+++ b/sound/core/memalloc.c
@@ -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