CVE-2025-68231

Source
https://cve.org/CVERecord?id=CVE-2025-68231
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-68231.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2025-68231
Downstream
Related
Published
2025-12-16T13:57:23.712Z
Modified
2026-03-13T04:02:49.825239Z
Summary
mm/mempool: fix poisoning order>0 pages with HIGHMEM
Details

In the Linux kernel, the following vulnerability has been resolved:

mm/mempool: fix poisoning order>0 pages with HIGHMEM

The kernel test has reported:

BUG: unable to handle page fault for address: fffba000 #PF: supervisor write access in kernel mode #PF: errorcode(0x0002) - not-present page *pde = 03171067 *pte = 00000000 Oops: Oops: 0002 [#1] CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Tainted: G T 6.18.0-rc2-00031-gec7f31b2a2d3 #1 NONE a1d066dfe789f54bc7645c7989957d2bdee593ca Tainted: [T]=RANDSTRUCT Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 EIP: memset (arch/x86/include/asm/string32.h:168 arch/x86/lib/memcpy32.c:17) Code: a5 8b 4d f4 83 e1 03 74 02 f3 a4 83 c4 04 5e 5f 5d 2e e9 73 41 01 00 90 90 90 3e 8d 74 26 00 55 89 e5 57 56 89 c6 89 d0 89 f7 <f3> aa 89 f0 5e 5f 5d 2e e9 53 41 01 00 cc cc cc 55 89 e5 53 57 56 EAX: 0000006b EBX: 00000015 ECX: 001fefff EDX: 0000006b ESI: fffb9000 EDI: fffba000 EBP: c611fbf0 ESP: c611fbe8 DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068 EFLAGS: 00010287 CR0: 80050033 CR2: fffba000 CR3: 0316e000 CR4: 00040690 Call Trace: poisonelement (mm/mempool.c:83 mm/mempool.c:102) mempoolinitnode (mm/mempool.c:142 mm/mempool.c:226) mempoolinitnoprof (mm/mempool.c:250 (discriminator 1)) ? mempoolallocpages (mm/mempool.c:640) biointegrityinitfn (block/bio-integrity.c:483 (discriminator 8)) ? mempoolallocpages (mm/mempool.c:640) dooneinitcall (init/main.c:1283)

Christoph found out this is due to the poisoning code not dealing properly with CONFIG_HIGHMEM because only the first page is mapped but then the whole potentially high-order page is accessed.

We could give up on HIGHMEM here, but it's straightforward to fix this with a loop that's mapping, poisoning or checking and unmapping individual pages.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/68xxx/CVE-2025-68231.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
bdfedb76f4f5aa5e37380e3b71adee4a39f30fc6
Fixed
ea4131665107e66ece90e66bcec1a2f1246cbd41
Fixed
19de79aaea33ee1ea058c8711b3b2b4a7e4decd4
Fixed
6a13b56537e7b0d97f4bb74e8038ce471f9770d7
Fixed
a79e49e1704367b635edad1479db23d7cf1fb71a
Fixed
ec33b59542d96830e3c89845ff833cf7b25ef172

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-68231.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.1.0
Fixed
6.1.159
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.118
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.60
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.17.10

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-68231.json"