{"id":29270,"date":"2026-09-25T20:32:18","date_gmt":"2026-09-25T12:32:18","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98116"},"modified":"2026-09-25T20:32:18","modified_gmt":"2026-09-25T12:32:18","slug":"cve-2026-98116","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98116","title":{"rendered":"CVE-2026-98116 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nALSA: pcm: Serialize"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF<\/p>\n<p>snd_pcm_hw_params() and snd_pcm_hw_free() guard buffer reallocation<br \/>\nwith an mmap_count check performed under the PCM stream lock, but the<br \/>\nlock is released long before the buffer is actually freed:<br \/>\nsnd_pcm_sync_stop(), constraint refinement and do_free_pages() all<br \/>\nhappen in between.  snd_pcm_mmap_data(), on the other hand, takes no<br \/>\nlock at all: it validates against the old buffer&#8217;s state and<br \/>\ndma_bytes, remaps its pages into the VMA, and only then increments<br \/>\nmmap_count.<\/p>\n<p>A concurrent mmap() can therefore slip in between the check and the<br \/>\nfree.  remap_pfn_range() installs writable PTEs for the old buffer&#8217;s<br \/>\npages without taking page references, and the subsequent<br \/>\ndo_free_pages() returns those pages to the page allocator while the<br \/>\nVMA still maps them.  This leaves a stale, writable mapping of freed<br \/>\npages: a page-level use-after-free that can be leveraged for local<br \/>\nprivilege escalation.<\/p>\n<p>Make snd_pcm_mmap_data() participate in the buffer-access scheme<br \/>\nintroduced for hw_params\/hw_free: acquire runtime-&gt;buffer_accessing<br \/>\nbefore validating and remapping, and release it afterwards.  Buffer<br \/>\nreallocation already fails with -EBUSY while accessors are active,<br \/>\nand the mmap side now fails with -EBUSY while a reallocation is in<br \/>\nprogress, so the validate\/remap sequence and the check\/free sequence<br \/>\ncan no longer interleave.<\/p>\n<p>A reproducer that turns this race into a stale writable mapping of<br \/>\nthe freed DMA buffer pages is available on request.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ALSA: pcm: Serialize PCM mmap with buffer reallocation to fix page UAF<\/p>\n<p>snd_pcm_hw_params() and snd_pcm_hw_free() guard buffer real<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29270","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=29270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}