mm/page_owner: use memcg_data snapshot to avoid TOCTOU in print_page_owner_memcg()
In the Linux kernel, the following vulnerability has been resolved: mm/page_owner: use memcg_data snapshot to avoid TOCTOU in print_page_owner_memcg() print_page_owner_memcg() reads page->memcg_data via READ_ONCE() at the start to guard against tail pages and NULL data. However, it later re-reads page->memcg_data locklessly in two places: 1: page_memcg_check(page) 2: PageMemcgKmem(page) (via folio_memcg_kmem(), which includes VM_BUG_ON assertions for tail pages and MEMCG_DATA_OBJEXTS) If the page is concurrently freed and reallocated as a THP tail page or slab page between these calls, the VM_BUG_ON assertions can trigger on CONFIG_DEBUG_VM=y builds, crashing the kernel. Fix both TOCTOU issues by using the memcg_data snapshot throughout.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 6.12.114, 6.6.160, 7.2.4
- CVEs
- CVE-2026-93216
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 10:17 UTC · Revision 1
Source evidence
mm/page_owner: use memcg_data snapshot to avoid TOCTOU in print_page_owner_memcg()
core-osv · Original sourcePublished 24 Sept 2026, 15:10 UTC
In the Linux kernel, the following vulnerability has been resolved: mm/page_owner: use memcg_data snapshot to avoid TOCTOU in print_page_owner_memcg() print_page_owner_memcg() reads page->memcg_data via READ_ONCE() at the start to guard against tail pages and NULL data. However, it later re-reads page->memcg_data locklessly in two places: 1: page_memcg_check(page) 2: PageMemcgKmem(page) (via folio_memcg_kmem(), which includes VM_BUG_ON assertions for tail pages and MEMCG_DATA_OBJEXTS) If the page is concurrently freed and reallocated as a THP tail page or slab page between these calls, the VM_BUG_ON assertions can trigger on CONFIG_DEBUG_VM=y builds, crashing the kernel. Fix both TOCTOU issues by using the memcg_data snapshot throughout.
osv:CVE-2026-93216
Kernel
Fixed versions: 6.6.160, 6.12.114, 7.2.4
Complete source record
{
"id": "4e7d3ff5a84186446fbc00d3ddb3b2d4387138d14f2058a900ad9ce3d13dca45",
"url": "https://osv.dev/vulnerability/CVE-2026-93216",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "mm/page_owner: use memcg_data snapshot to avoid TOCTOU in print_page_owner_memcg()",
"summary": "In the Linux kernel, the following vulnerability has been resolved: mm/page_owner: use memcg_data snapshot to avoid TOCTOU in print_page_owner_memcg() print_page_owner_memcg() reads page->memcg_data via READ_ONCE() at the start to guard against tail pages and NULL data. However, it later re-reads page->memcg_data locklessly in two places: 1: page_memcg_check(page) 2: PageMemcgKmem(page) (via folio_memcg_kmem(), which includes VM_BUG_ON assertions for tail pages and MEMCG_DATA_OBJEXTS) If the page is concurrently freed and reallocated as a THP tail page or slab page between these calls, the VM_BUG_ON assertions can trigger on CONFIG_DEBUG_VM=y builds, crashing the kernel. Fix both TOCTOU issues by using the memcg_data snapshot throughout.",
"evidence": "osv:CVE-2026-93216",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "6.6.160",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.114",
"evidence": "/affected/1/ranges"
},
{
"value": "7.2.4",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2026-93216",
"aliases": [
"CVE-2026-93216"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "fcf8935832b86d3437f00e732c6d0d4d2819d6a9"
},
{
"fixed": "e7c1923c5f30a6953f0540e3171d882ec17b05d3"
},
{
"fixed": "a4c940ab3f794f221a338c9431ad1ce0d73a2bea"
},
{
"fixed": "46761406e14381dc35f498c247a87565b87ea2ef"
},
{
"fixed": "90f095b816e25c6a9e4446d299bac5007fdcb3df"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-93216.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.18.0"
},
{
"fixed": "6.6.160"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.114"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "7.2.4"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-93216.json"
}
}
],
"modified": "2026-10-28T02:30:27.648331264Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/46761406e14381dc35f498c247a87565b87ea2ef",
"https://git.kernel.org/stable/c/90f095b816e25c6a9e4446d299bac5007fdcb3df",
"https://git.kernel.org/stable/c/a4c940ab3f794f221a338c9431ad1ce0d73a2bea",
"https://git.kernel.org/stable/c/e7c1923c5f30a6953f0540e3171d882ec17b05d3",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93216.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-93216",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93216.json"
}
},
"related_cves": [
{
"value": "CVE-2026-93216",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 494438,
"published_at": "2026-09-24T15:10:38.702+00:00"
}