summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenzo Stoakes (ARM) <ljs@kernel.org>2026-10-23 11:21:31 +0100
committerAndrew Morton <akpm@linux-foundation.org>2026-10-24 01:56:10 -0700
commitbbde9d5bdd2d7cf94707b2a8bb466f2e074f9db2 (patch)
tree9c5f949772366eb767034209b06f9ddc0bcd964e
parent4590752e20aa393cc0d4fe538c0747d14a98c97a (diff)
ALSA: us122l: mark hwdep mappings VM_MIXEDMAP
mm has recently moved to a strict model which requires any driver which clears VMA_MAYWRITE_BIT to be mapping non-mm-managed memory (VMA_PFNMAP_BIT or VMA_MIXEDMAP_BIT), failing any such mmap() with an error and a kernel warning - see "mm/vma: only allow mmap to clear VMA_MAYWRITE_BIT if not mm-managed". However, simultaneous to this, commit 71c610aeb177 ("ALSA: us122l: Prevent write upgrades for read mappings") updated us122l to clear VMA_MAYWRITE_BIT without marking the region with either VMA_PFNMAP_BIT or VMA_MIXEDMAP_BIT. vm_insert_pages() and friends set this automatically, however this driver maps its pre-allocated pages from a fault handler, so never calls these. Simply set the flag in usb_stream_hwdep_mmap() to resolve the issue. This correctly marks the mapping as one whose pages core mm does not manage, which has no meaningful impact for this driver beyond preventing the mmap() from failing. Link: https://lore.kernel.org/20261023-fix-us122l-mixedmap-v1-1-e7bdd053850f@kernel.org Fixes: 71c610aeb177 ("ALSA: us122l: Prevent write upgrades for read mappings") Signed-off-by: Lorenzo Stoakes (ARM) <ljs@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Reported-by: David Carlier <devnexen@gmail.com> Closes: https://lore.kernel.org/20261018025905.201296-1-devnexen@gmail.com Acked-by: Takashi Iwai <tiwai@suse.de> Cc: Kazuki Hanai <hnkz.64@gmail.com> Cc: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--sound/usb/usx2y/us122l.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/usb/usx2y/us122l.c b/sound/usb/usx2y/us122l.c
index a5db0d044ef9..2986a90ea335 100644
--- a/sound/usb/usx2y/us122l.c
+++ b/sound/usb/usx2y/us122l.c
@@ -193,7 +193,7 @@ static int usb_stream_hwdep_mmap(struct snd_hwdep *hw,
}
area->vm_ops = &usb_stream_hwdep_vm_ops;
- vm_flags_set(area, VM_DONTDUMP);
+ vm_flags_set(area, VM_MIXEDMAP | VM_DONTDUMP);
if (!read)
vm_flags_set(area, VM_DONTEXPAND);
area->vm_private_data = us122l;