CVE-2026-23100
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
04/02/2026
Last modified:
25/03/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
mm/hugetlb: fix hugetlb_pmd_shared()<br />
<br />
Patch series "mm/hugetlb: fixes for PMD table sharing (incl. using<br />
mmu_gather)", v3.<br />
<br />
One functional fix, one performance regression fix, and two related<br />
comment fixes.<br />
<br />
I cleaned up my prototype I recently shared [1] for the performance fix,<br />
deferring most of the cleanups I had in the prototype to a later point. <br />
While doing that I identified the other things.<br />
<br />
The goal of this patch set is to be backported to stable trees "fairly"<br />
easily. At least patch #1 and #4.<br />
<br />
Patch #1 fixes hugetlb_pmd_shared() not detecting any sharing<br />
Patch #2 + #3 are simple comment fixes that patch #4 interacts with.<br />
Patch #4 is a fix for the reported performance regression due to excessive<br />
IPI broadcasts during fork()+exit().<br />
<br />
The last patch is all about TLB flushes, IPIs and mmu_gather.<br />
Read: complicated<br />
<br />
There are plenty of cleanups in the future to be had + one reasonable<br />
optimization on x86. But that&#39;s all out of scope for this series.<br />
<br />
Runtime tested, with a focus on fixing the performance regression using<br />
the original reproducer [2] on x86.<br />
<br />
<br />
This patch (of 4):<br />
<br />
We switched from (wrongly) using the page count to an independent shared<br />
count. Now, shared page tables have a refcount of 1 (excluding<br />
speculative references) and instead use ptdesc->pt_share_count to identify<br />
sharing.<br />
<br />
We didn&#39;t convert hugetlb_pmd_shared(), so right now, we would never<br />
detect a shared PMD table as such, because sharing/unsharing no longer<br />
touches the refcount of a PMD table.<br />
<br />
Page migration, like mbind() or migrate_pages() would allow for migrating<br />
folios mapped into such shared PMD tables, even though the folios are not<br />
exclusive. In smaps we would account them as "private" although they are<br />
"shared", and we would be wrongly setting the PM_MMAP_EXCLUSIVE in the<br />
pagemap interface.<br />
<br />
Fix it by properly using ptdesc_pmd_is_shared() in hugetlb_pmd_shared().
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.10.239 (including) | 5.11 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.15.186 (including) | 5.16 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.1.142 (including) | 6.2 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.6.72 (including) | 6.6.127 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12.9 (including) | 6.12.74 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.13.1 (including) | 6.18.8 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.13:-:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.13:rc7:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.19:rc6:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/3a18b452dd5f7f1652c2e92f8ae769aa17a66c9e
- https://git.kernel.org/stable/c/51dcf459845fd28f5a0d83d408a379b274ec5cc5
- https://git.kernel.org/stable/c/5b2aec77f92265a9028c5f632bdd9af5b57ec3a3
- https://git.kernel.org/stable/c/69c4e241ff13545d410a8b2a688c932182a858bf
- https://git.kernel.org/stable/c/ca1a47cd3f5f4c46ca188b1c9a27af87d1ab2216



