Takashi Iwai 8f5341
From dc0dc8a73e8e4dc33fba93dfe23356cc5a500c57 Mon Sep 17 00:00:00 2001
Takashi Iwai 8f5341
From: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 8f5341
Date: Sun, 8 Aug 2021 09:01:16 +0200
Takashi Iwai 8f5341
Subject: [PATCH] ALSA: pcm: Fix mmap breakage without explicit buffer setup
Takashi Iwai 8f5341
Git-commit: dc0dc8a73e8e4dc33fba93dfe23356cc5a500c57
Takashi Iwai 8f5341
Patch-mainline: v5.14-rc6
Takashi Iwai 8f5341
References: git-fixes
Takashi Iwai 8f5341
Takashi Iwai 8f5341
The recent fix c4824ae7db41 ("ALSA: pcm: Fix mmap capability check")
Takashi Iwai 8f5341
restricts the mmap capability only to the drivers that properly set up
Takashi Iwai 8f5341
the buffers, but it caused a regression for a few drivers that manage
Takashi Iwai 8f5341
the buffer on its own way.
Takashi Iwai 8f5341
Takashi Iwai 8f5341
For those with UNKNOWN buffer type (i.e. the uninitialized / unused
Takashi Iwai 8f5341
substream->dma_buffer), just assume that the driver handles the mmap
Takashi Iwai 8f5341
properly and blindly trust the hardware info bit.
Takashi Iwai 8f5341
Takashi Iwai 8f5341
Fixes: c4824ae7db41 ("ALSA: pcm: Fix mmap capability check")
Takashi Iwai 8f5341
Reported-and-tested-by: Jeff Woods <jwoods@fnordco.com>
Takashi Iwai 8f5341
Cc: <stable@vger.kernel.org>
Takashi Iwai 8f5341
Link: https://lore.kernel.org/r/s5him0gpghv.wl-tiwai@suse.de
Takashi Iwai 8f5341
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 8f5341
Takashi Iwai 8f5341
---
Takashi Iwai 8f5341
 sound/core/pcm_native.c | 5 ++++-
Takashi Iwai 8f5341
 1 file changed, 4 insertions(+), 1 deletion(-)
Takashi Iwai 8f5341
Takashi Iwai 8f5341
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
Takashi Iwai 8f5341
index 09c0e2a6489c..71323d807dbf 100644
Takashi Iwai 8f5341
--- a/sound/core/pcm_native.c
Takashi Iwai 8f5341
+++ b/sound/core/pcm_native.c
Takashi Iwai 8f5341
@@ -251,7 +251,10 @@ static bool hw_support_mmap(struct snd_pcm_substream *substream)
Takashi Iwai 8f5341
 
Takashi Iwai 8f5341
 	switch (substream->dma_buffer.dev.type) {
Takashi Iwai 8f5341
 	case SNDRV_DMA_TYPE_UNKNOWN:
Takashi Iwai 8f5341
-		return false;
Takashi Iwai 8f5341
+		/* we can't know the device, so just assume that the driver does
Takashi Iwai 8f5341
+		 * everything right
Takashi Iwai 8f5341
+		 */
Takashi Iwai 8f5341
+		return true;
Takashi Iwai 8f5341
 	case SNDRV_DMA_TYPE_CONTINUOUS:
Takashi Iwai 8f5341
 	case SNDRV_DMA_TYPE_VMALLOC:
Takashi Iwai 8f5341
 		return true;
Takashi Iwai 8f5341
-- 
Takashi Iwai 8f5341
2.26.2
Takashi Iwai 8f5341