Answer in brief
CVE-2026-31466 records a Medium severity (CVSS 4.7) vulnerability in mm/huge_memory: fix folio isn't locked in softleaf_to_folio(). The current sources do not mark it as known exploited. The current feed maps Linux/Linux (generic), Linux/Linux (generic), Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (generic), Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (generic) and additional mapped packages. Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
Answer in brief
CVE-2026-31466 records a Medium severity (CVSS 4.7) vulnerability in mm/huge_memory: fix folio isn't locked in softleaf_to_folio(). The current sources do not mark it as known exploited. The current feed maps Linux/Linux (generic), Linux/Linux (generic), Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (generic), Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (generic) and additional mapped packages. Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 4.7. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps Linux/Linux (generic), Linux/Linux (generic), Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (generic), Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (generic) and additional mapped packages. Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| Linux/Linuxgeneric | >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <426ee10711586617da869c8bb798214965337617 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <f1acf5887c2bbaf998dc3fe32c72b7a8b84a3ddd || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <722cfaf6b31d31123439e67b5deac6b1261a3dea || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <7ddcf4a245c1c5a91fdd9698757e3d95179ffe41 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <b8c49ad888892ad7b77062b9c102b799a3e9b4f8 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <7ad1997b9bc8032603df8f091761114479285769 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <8bfb8414e9f2ce6f5f2f0e3d0da52f2d132128e7 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <4c5e7f0fcd592801c9cc18f29f80fbee84eb8669 | 426ee10711586617da869c8bb798214965337617, f1acf5887c2bbaf998dc3fe32c72b7a8b84a3ddd, 722cfaf6b31d31123439e67b5deac6b1261a3dea, 7ddcf4a245c1c5a91fdd9698757e3d95179ffe41, b8c49ad888892ad7b77062b9c102b799a3e9b4f8, 7ad1997b9bc8032603df8f091761114479285769, 8bfb8414e9f2ce6f5f2f0e3d0da52f2d132128e7, 4c5e7f0fcd592801c9cc18f29f80fbee84eb8669 |
| Linux/Linuxgeneric | 4.5 | Not reported |
| Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFPgeneric | >=V3.1.6 <* | * |
| Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFPgeneric | >=V3.1.5 <* | * |
| Siemens/SIMATIC S7-1500 CPU 1518F-4 PN/DP MFPgeneric | >=V3.1.6 <* | * |
| Siemens/SIMATIC S7-1500 CPU 1518F-4 PN/DP MFPgeneric | >=V3.1.5 <* | * |
| Siemens/SIPLUS S7-1500 CPU 1518-4 PN/DP MFPgeneric | >=V3.1.6 <* | * |
| Siemens/SIPLUS S7-1500 CPU 1518-4 PN/DP MFPgeneric | >=V3.1.5 <* | * |
Published upstream
Apr 22, 2026
Evidence: source:cvelist:source_dates:source-dates:recordSource modified
Jul 14, 2026
Evidence: source:cvelist:source_dates:source-dates:recordFirst seen by HOL
Jul 14, 2026
In the Linux kernel, the following vulnerability has been resolved: mm/huge_memory: fix folio isn't locked in softleaf_to_folio() On arm64 server, we found folio that get from migration entry isn't locked in softleaf_to_folio(). This issue triggers when mTHP splitting and zap_nonpresent_ptes() races, and the root cause is lack of memory barrier in softleaf_to_folio(). The race is as follows: CPU0 CPU1 deferred_split_scan() zap_nonpresent_ptes() lock folio split_folio() unmap_folio() change ptes to migration entries __split_folio_to_order() softleaf_to_folio() set flags(including PG_locked) for tail pages folio = pfn_folio(softleaf_to_pfn(entry)) smp_wmb() VM_WARN_ON_ONCE(!folio_test_locked(folio)) prep_compound_page() for tail pages In __split_folio_to_order(), smp_wmb() guarantees page flags of tail pages are visible before the tail page becomes non-compound. smp_wmb() should be paired with smp_rmb() in softleaf_to_folio(), which is missed. As a result, if zap_nonpresent_ptes() accesses migration entry that stores tail pfn, softleaf_to_folio() may see the updated compound_head of tail page before page->flags. This issue will trigger VM_WARN_ON_ONCE() in pfn_swap_entry_folio() because of the race between folio split and zap_nonpresent_ptes() leading to a folio incorrectly undergoing modification without a folio lock being held. This is a BUG_ON() before commit 93976a20345b ("mm: eliminate further swapops predicates"), which in merged in v6.19-rc1. To fix it, add missing smp_rmb() if the softleaf entry is migration entry in softleaf_to_folio() and softleaf_to_page(). [[email protected]: update function name and comments]
Quoted source text, attributed separately from HOL analysis.
CVSS is 4.7. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps Linux/Linux (generic), Linux/Linux (generic), Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (generic), Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (generic) and additional mapped packages. Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| Linux/Linuxgeneric | >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <426ee10711586617da869c8bb798214965337617 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <f1acf5887c2bbaf998dc3fe32c72b7a8b84a3ddd || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <722cfaf6b31d31123439e67b5deac6b1261a3dea || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <7ddcf4a245c1c5a91fdd9698757e3d95179ffe41 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <b8c49ad888892ad7b77062b9c102b799a3e9b4f8 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <7ad1997b9bc8032603df8f091761114479285769 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <8bfb8414e9f2ce6f5f2f0e3d0da52f2d132128e7 || >=e9b61f19858a5d6c42ce2298cf138279375d0d9b <4c5e7f0fcd592801c9cc18f29f80fbee84eb8669 | 426ee10711586617da869c8bb798214965337617, f1acf5887c2bbaf998dc3fe32c72b7a8b84a3ddd, 722cfaf6b31d31123439e67b5deac6b1261a3dea, 7ddcf4a245c1c5a91fdd9698757e3d95179ffe41, b8c49ad888892ad7b77062b9c102b799a3e9b4f8, 7ad1997b9bc8032603df8f091761114479285769, 8bfb8414e9f2ce6f5f2f0e3d0da52f2d132128e7, 4c5e7f0fcd592801c9cc18f29f80fbee84eb8669 |
| Linux/Linuxgeneric | 4.5 | Not reported |
| Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFPgeneric | >=V3.1.6 <* | * |
| Siemens/SIMATIC S7-1500 CPU 1518-4 PN/DP MFPgeneric | >=V3.1.5 <* | * |
| Siemens/SIMATIC S7-1500 CPU 1518F-4 PN/DP MFPgeneric | >=V3.1.6 <* | * |
| Siemens/SIMATIC S7-1500 CPU 1518F-4 PN/DP MFPgeneric | >=V3.1.5 <* | * |
| Siemens/SIPLUS S7-1500 CPU 1518-4 PN/DP MFPgeneric | >=V3.1.6 <* | * |
| Siemens/SIPLUS S7-1500 CPU 1518-4 PN/DP MFPgeneric | >=V3.1.5 <* | * |
Published upstream
Apr 22, 2026
Evidence: source:cvelist:source_dates:source-dates:recordSource modified
Jul 14, 2026
Evidence: source:cvelist:source_dates:source-dates:recordFirst seen by HOL
Jul 14, 2026
In the Linux kernel, the following vulnerability has been resolved: mm/huge_memory: fix folio isn't locked in softleaf_to_folio() On arm64 server, we found folio that get from migration entry isn't locked in softleaf_to_folio(). This issue triggers when mTHP splitting and zap_nonpresent_ptes() races, and the root cause is lack of memory barrier in softleaf_to_folio(). The race is as follows: CPU0 CPU1 deferred_split_scan() zap_nonpresent_ptes() lock folio split_folio() unmap_folio() change ptes to migration entries __split_folio_to_order() softleaf_to_folio() set flags(including PG_locked) for tail pages folio = pfn_folio(softleaf_to_pfn(entry)) smp_wmb() VM_WARN_ON_ONCE(!folio_test_locked(folio)) prep_compound_page() for tail pages In __split_folio_to_order(), smp_wmb() guarantees page flags of tail pages are visible before the tail page becomes non-compound. smp_wmb() should be paired with smp_rmb() in softleaf_to_folio(), which is missed. As a result, if zap_nonpresent_ptes() accesses migration entry that stores tail pfn, softleaf_to_folio() may see the updated compound_head of tail page before page->flags. This issue will trigger VM_WARN_ON_ONCE() in pfn_swap_entry_folio() because of the race between folio split and zap_nonpresent_ptes() leading to a folio incorrectly undergoing modification without a folio lock being held. This is a BUG_ON() before commit 93976a20345b ("mm: eliminate further swapops predicates"), which in merged in v6.19-rc1. To fix it, add missing smp_rmb() if the softleaf entry is migration entry in softleaf_to_folio() and softleaf_to_page(). [[email protected]: update function name and comments]
Quoted source text, attributed separately from HOL analysis.