All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: "Yilin Zhang" <yilinzhang@moonshot.ai>
Cc: <tiwai@suse.com>, <perex@perex.cz>, <linux-sound@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <stable@vger.kernel.org>,
	"Kimi Security Team" <bug-report@moonshot.ai>
Subject: Re: [PATCH] ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF
Date: Mon, 31 Aug 2026 10:11:08 +0200	[thread overview]
Message-ID: <87a4q2so9v.wl-tiwai@suse.de> (raw)
In-Reply-To: <20260831045506.889070-1-yilinzhang@moonshot.ai>

On Mon, 31 Aug 2026 06:55:06 +0200,
Yilin Zhang wrote:
> 
> snd_pcm_hw_params() and snd_pcm_hw_free() guard buffer reallocation
> with an mmap_count check performed under the PCM stream lock, but the
> lock is released long before the buffer is actually freed:
> snd_pcm_sync_stop(), constraint refinement and do_free_pages() all
> happen in between.  snd_pcm_mmap_data(), on the other hand, takes no
> lock at all: it validates against the old buffer's state and
> dma_bytes, remaps its pages into the VMA, and only then increments
> mmap_count.
> 
> A concurrent mmap() can therefore slip in between the check and the
> free.  remap_pfn_range() installs writable PTEs for the old buffer's
> pages without taking page references, and the subsequent
> do_free_pages() returns those pages to the page allocator while the
> VMA still maps them.  This leaves a stale, writable mapping of freed
> pages: a page-level use-after-free that can be leveraged for local
> privilege escalation.
> 
> Make snd_pcm_mmap_data() participate in the buffer-access scheme
> introduced for hw_params/hw_free: acquire runtime->buffer_accessing
> before validating and remapping, and release it afterwards.  Buffer
> reallocation already fails with -EBUSY while accessors are active,
> and the mmap side now fails with -EBUSY while a reallocation is in
> progress, so the validate/remap sequence and the check/free sequence
> can no longer interleave.
> 
> A reproducer that turns this race into a stale writable mapping of
> the freed DMA buffer pages is available on request.
> 
> Reported-by: Kimi Security Team <bug-report@moonshot.ai>
> Fixes: 92ee3c60ec9f ("ALSA: pcm: Fix races among concurrent hw_params and hw_free calls")
> Signed-off-by: Yilin Zhang <yilinzhang@moonshot.ai>

Applied now.  Thanks.


Takashi

      reply	other threads:[~2026-08-31  8:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-31  4:55 [PATCH] ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF Yilin Zhang
2026-08-31  8:11 ` Takashi Iwai [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87a4q2so9v.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=bug-report@moonshot.ai \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=perex@perex.cz \
    --cc=stable@vger.kernel.org \
    --cc=tiwai@suse.com \
    --cc=yilinzhang@moonshot.ai \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.