In the Linux kernel, the following vulnerability has been resolved:
x86/mm/64: define ARCHPAGETABLESYNCMASK and archsynckernel_mappings()
Define ARCHPAGETABLESYNCMASK and archsynckernelmappings() to ensure page tables are properly synchronized when calling p*dpopulate_kernel().
For 5-level paging, synchronization is performed via pgdpopulatekernel(). In 4-level paging, pgdpopulate() is a no-op, so synchronization is instead performed at the P4D level via p4dpopulate_kernel().
This fixes intermittent boot failures on systems using 4-level paging and a large amount of persistent memory:
BUG: unable to handle page fault for address: ffffe70000000034 #PF: supervisor write access in kernel mode #PF: errorcode(0x0002) - not-present page PGD 0 P4D 0 Oops: 0002 [#1] SMP NOPTI RIP: 0010:initsinglepage+0x9/0x6d Call Trace: <TASK> _initzonedevicepage+0x17/0x5d memmapinitzonedevice+0x154/0x1bb pagemaprange+0x2e0/0x40f memremappages+0x10b/0x2f0 devmmemremappages+0x1e/0x60 devdaxprobe+0xce/0x2ec [devicedax] daxbus_probe+0x6d/0xc9 [... snip ...] </TASK>
It also fixes a crash in vmemmapsetpmd() caused by accessing vmemmap before syncglobalpgds() [1]:
BUG: unable to handle page fault for address: ffffeb3ff1200000 #PF: supervisor write access in kernel mode #PF: errorcode(0x0002) - not-present page PGD 0 P4D 0 Oops: Oops: 0002 [#1] PREEMPT SMP NOPTI Tainted: [W]=WARN RIP: 0010:vmemmapsetpmd+0xff/0x230 <TASK> vmemmappopulatehugepages+0x176/0x180 vmemmappopulate+0x34/0x80 _populatesectionmemmap+0x41/0x90 sparseaddsection+0x121/0x3e0 _addpages+0xba/0x150 addpages+0x1d/0x70 memremappages+0x3dc/0x810 devmmemremappages+0x1c/0x60 xedevmadd+0x8b/0x100 [xe] xetileinitnoalloc+0x6a/0x70 [xe] xedeviceprobe+0x48c/0x740 [xe] [... snip ...]
[
{
"deprecated": false,
"id": "CVE-2025-39845-071c343c",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@26ff568f390a531d1bd792e49f1a401849921960",
"signature_version": "v1",
"target": {
"file": "arch/x86/mm/init_64.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"292102369450844765215046995170255399545",
"43340817475299822240046619306541372157",
"166412322837697496711328076620509911588"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-0b783068",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5f761d40ee95d2624f839c90ebeef2d5c55007f5",
"signature_version": "v1",
"target": {
"file": "arch/x86/include/asm/pgtable_64_types.h"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79635439334852717264172675673969004999",
"20575276009666241478296440087417200574",
"127352882182714949146336767959522555466"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-0c436a5b",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@5f761d40ee95d2624f839c90ebeef2d5c55007f5",
"signature_version": "v1",
"target": {
"file": "arch/x86/mm/init_64.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"292102369450844765215046995170255399545",
"43340817475299822240046619306541372157",
"166412322837697496711328076620509911588"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-0df6d6bc",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@744ff519c72de31344a627eaf9b24e9595aae554",
"signature_version": "v1",
"target": {
"file": "arch/x86/mm/init_64.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"292102369450844765215046995170255399545",
"43340817475299822240046619306541372157",
"166412322837697496711328076620509911588"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-3e6a0df3",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6bf9473727569e8283c1e2445c7ac42cf4fc9fa9",
"signature_version": "v1",
"target": {
"file": "arch/x86/include/asm/pgtable_64_types.h"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"113173610276471806693782820352683076343",
"275585267911875828578304754990600066743",
"107235858114321793288770255223272093571"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-4e28b149",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b7f4051dd3388edd30e9a6077c05c486aa31e0d4",
"signature_version": "v1",
"target": {
"file": "arch/x86/include/asm/pgtable_64_types.h"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79635439334852717264172675673969004999",
"20575276009666241478296440087417200574",
"127352882182714949146336767959522555466"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-521b9283",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6659d027998083fbb6d42a165b0c90dc2e8ba989",
"signature_version": "v1",
"target": {
"file": "arch/x86/include/asm/pgtable_64_types.h"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"113173610276471806693782820352683076343",
"275585267911875828578304754990600066743",
"107235858114321793288770255223272093571"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-52a88230",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@744ff519c72de31344a627eaf9b24e9595aae554",
"signature_version": "v1",
"target": {
"file": "arch/x86/include/asm/pgtable_64_types.h"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79635439334852717264172675673969004999",
"20575276009666241478296440087417200574",
"127352882182714949146336767959522555466"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-6f7db180",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6659d027998083fbb6d42a165b0c90dc2e8ba989",
"signature_version": "v1",
"target": {
"file": "arch/x86/mm/init_64.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"292102369450844765215046995170255399545",
"43340817475299822240046619306541372157",
"166412322837697496711328076620509911588"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-827a3acb",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@26ff568f390a531d1bd792e49f1a401849921960",
"signature_version": "v1",
"target": {
"file": "arch/x86/include/asm/pgtable_64_types.h"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"79635439334852717264172675673969004999",
"20575276009666241478296440087417200574",
"127352882182714949146336767959522555466"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-debc0b6d",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6bf9473727569e8283c1e2445c7ac42cf4fc9fa9",
"signature_version": "v1",
"target": {
"file": "arch/x86/mm/init_64.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"292102369450844765215046995170255399545",
"43340817475299822240046619306541372157",
"166412322837697496711328076620509911588"
]
}
},
{
"deprecated": false,
"id": "CVE-2025-39845-e67d5f0f",
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b7f4051dd3388edd30e9a6077c05c486aa31e0d4",
"signature_version": "v1",
"target": {
"file": "arch/x86/mm/init_64.c"
},
"digest": {
"threshold": 0.9,
"line_hashes": [
"292102369450844765215046995170255399545",
"43340817475299822240046619306541372157",
"166412322837697496711328076620509911588"
]
}
}
]