HOL LogoGuard

Explore HOL

  • HOL home
  • AI agent registry
  • AI plugins
  • Open standards
  • HOL members
  • Sponsor HOL
  • Advertise with HOL

Guard product

  • Guard overviewLocal security and control for AI agents and the tools they use.
  • FeaturesRuntime protection, policy routing, review, and evidence.

Explore Guard

  • Product previewWalk through Guard surfaces in read-only demo mode.
  • ComparisonCompare Guard with native controls and AI security vendors.

AI tools

  • All AI toolsEvery supported AI tool and how Guard applies policy to it.
  • Codex
  • Claude Code
  • Cursor
  • Antigravity CLI
  • OpenCode
  • Hermes
  • OpenClaw
  • GitHub Copilot CLI
  • Antigravity
  • Kimi
  • Grok
  • Pi / Oh My Pi
  • Zcode

Extensions

  • All extensionsBrowse command and MCP coverage with owners and stated limits.
  • Command coverageShell command protection across clouds, databases, backups, and packages.
  • MCP server coverageSee how Guard maps risk state across MCP tools and servers.
  • Core safetyThe safety floor listings that ship with Guard.
  • Data and resilienceBackup and storage command protection.
  • Cloud and infrastructureAWS, Azure, GCP, Kubernetes, and more.

Security

  • AI security hubSecurity research, advisories, and agent safety coverage.
  • AI tool securitySecurity profiles for each supported coding agent.
  • Safe labsHands-on attack simulations with safe boundaries.
  • Redacted warningsReal blocked actions with sensitive details removed.
  • AdvisoriesCoordinated disclosure reports for AI tooling.
  • Active CVEsSearch active CVEs affecting AI tooling.

Learn

  • Security guidesPractical guides for securing AI agent workflows.
  • DocsInstall, configure, and operate Guard with confidence.
  • ResearchPublished security research, benchmarks, and methodology.

Community

  • ReleasesVersion history, shipped changes and upgrade notes.
  • ContributorsThe people and contributions behind HOL Guard.
  • AffiliatesShare Guard with your audience and earn from referrals.
  • SponsorFund agreed research, implementation and shared testing through the HOL Partner Program.
  • AdvertiseCompare README logo placements, previews and monthly prices, or promote a plugin or extension.
PricingEnterpriseOpen AppInstall Guard
  1. Guard
  2. Security
  3. CVEs
  4. CVE 2026 89987 mmhugememory transfer the pmd dirty bit to the
HOL Guard

Public security guidance for teams protecting AI harnesses, MCP servers, skills, prompts, and local tool execution.

Install Guard

AI Security

  • Prompt injection
  • MCP security
  • OWASP MCP mapping
  • Supply chain

Resources

  • Trust packet
  • Harness setup
  • Redacted warnings
  • Safe labs

Product

  • Install Guard
  • Pricing
  • Open dashboard
Guard
  • Guard Overview
  • Releases
  • Contributors
  • Install Guard
  • Pricing
Docs
  • Documentation Index
  • Developer Hub
  • API Reference
  • Root OpenAPI
  • Registry OpenAPI
  • Run in Postman
  • Standards
  • Submit ERC-8004 Contract
  • Feature Your Agent
Best Plugins
  • Browse Plugins
  • Plugin Launches
  • Best Claude Plugins
  • Best Codex Plugins
  • Best Grok Plugins
  • Best Kimi Plugins
  • Best DeepSeek Plugins
  • Best Antigravity Plugins
  • Best MCP Servers
  • Best Cursor Plugins
  • Best OpenCode Plugins
Best Agents
  • Best ERC-8004 Agents
  • Best Virtuals Agents
  • Best MCP Servers
  • Best A2A Agents
  • Best x402 Payable
  • All Categories
Community
  • Telegram
  • X
More
  • About HOL
  • Sponsor
  • Advertise
  • Contact
  • Blog
  • GitHub
  • Privacy
  • Terms of Service
Settings

Copyright © 2026 HOL DAO LLC. All rights reserved.

Back to active CVEs
Unknown severity · Source severity not reportedCVE-2026-89987

mm/huge_memory: transfer the pmd dirty bit to the folio on zapCVE-2026-89987

Answer in brief

CVE-2026-89987 records a Unknown severity vulnerability in mm/huge_memory: transfer the pmd dirty bit to the folio on zap. The current sources do not mark it as known exploited. The current feed maps Linux/Linux (generic), Linux/Linux (generic), Linux/Linux (generic), Linux/Linux (generic). Check affected ranges and fixed versions before updating.

Analysis pending evidence review

HOL Guard separates source facts from reviewed analysis. See the methodology.

Published Sep 16, 2026Updated Oct 30, 2026Source checked Oct 31, 2026First seen by HOL Sep 16, 2026Material review Oct 30, 2026
Upstream Advisory

Key facts

Risk
Unknown severitySource severity not reported
Exploitation
Not marked as known exploited
Affected software
4 mapped packages or products
Fix availability
Available

Why this deserves its current priority

A CVSS score is not reported in the current record. 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.

Affected scope and exposure questions

The current feed maps Linux/Linux (generic), Linux/Linux (generic), Linux/Linux (generic), Linux/Linux (generic). Check affected ranges and fixed versions before updating.

Mapped affected packages and fixed versions
PackageAffected rangeFixed version
Linux/Linuxgeneric>=b5072380eb619786990cd9eab3ade05d09ccd89e <effe3cc6d4fdd407457eb30f7b0ef094393f0d64 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <9435cddf1378d149d826bd7bd1448a44bf96868d || >=b5072380eb619786990cd9eab3ade05d09ccd89e <fe6cf984939d8e12cb33a99673c8d026c5135e68effe3cc6d4fdd407457eb30f7b0ef094393f0d64, 9435cddf1378d149d826bd7bd1448a44bf96868d, fe6cf984939d8e12cb33a99673c8d026c5135e68
Linux/Linuxgeneric4.8Not reported
Linux/Linuxgeneric>=b5072380eb619786990cd9eab3ade05d09ccd89e <6e904f9e8cb0e39f60e1cdbea679f89346a563c2 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <fd720d3906877b3d2118cd480027e4bc6648f0c5 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <effe3cc6d4fdd407457eb30f7b0ef094393f0d64 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <9435cddf1378d149d826bd7bd1448a44bf96868d || >=b5072380eb619786990cd9eab3ade05d09ccd89e <fe6cf984939d8e12cb33a99673c8d026c5135e686e904f9e8cb0e39f60e1cdbea679f89346a563c2, fd720d3906877b3d2118cd480027e4bc6648f0c5, effe3cc6d4fdd407457eb30f7b0ef094393f0d64, 9435cddf1378d149d826bd7bd1448a44bf96868d, fe6cf984939d8e12cb33a99673c8d026c5135e68
Linux/Linuxgeneric>=b5072380eb619786990cd9eab3ade05d09ccd89e <79d8c89baa10612c1675972a632c65cdbe0936f6 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <13f4910d81b62a214cdb28b47237198fa96078a2 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <7a4c3f7b47ba34b021a7747081f330bfb76a4271 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <6e904f9e8cb0e39f60e1cdbea679f89346a563c2 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <fd720d3906877b3d2118cd480027e4bc6648f0c5 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <effe3cc6d4fdd407457eb30f7b0ef094393f0d64 || >=b5072380eb619786990cd9eab3ade05d09ccd89e <9435cddf1378d149d826bd7bd1448a44bf96868d || >=b5072380eb619786990cd9eab3ade05d09ccd89e <fe6cf984939d8e12cb33a99673c8d026c5135e6879d8c89baa10612c1675972a632c65cdbe0936f6, 13f4910d81b62a214cdb28b47237198fa96078a2, 7a4c3f7b47ba34b021a7747081f330bfb76a4271, 6e904f9e8cb0e39f60e1cdbea679f89346a563c2, fd720d3906877b3d2118cd480027e4bc6648f0c5, effe3cc6d4fdd407457eb30f7b0ef094393f0d64, 9435cddf1378d149d826bd7bd1448a44bf96868d, fe6cf984939d8e12cb33a99673c8d026c5135e68

Recommended response

  1. 1Check inventory. Check lockfiles and deployed manifests for Linux/Linux, Linux/Linux, Linux/Linux.
  2. 2Review the reported fix. Update Linux/Linux to effe3cc6d4fdd407457eb30f7b0ef094393f0d64; Linux/Linux to 6e904f9e8cb0e39f60e1cdbea679f89346a563c2; Linux/Linux to 79d8c89baa10612c1675972a632c65cdbe0936f6 if you use the affected versions. Test the change in a non-production environment first.

Evidence timeline and material changes

  1. Published upstream

    Sep 16, 2026

    Evidence: source:cvelist:source_dates:source-dates:record
  2. Source modified

    Oct 30, 2026

    Evidence: source:cvelist:source_dates:source-dates:record
  3. First seen by HOL

    Sep 16, 2026

Sources and claim methodology

  • Source referencegit.kernel.org
  • Source referencegit.kernel.org
  • Source referencegit.kernel.org
  • Source referencegit.kernel.org
  • Source referencegit.kernel.org
  • Source referencegit.kernel.org
  • Source referencegit.kernel.org
  • Source referencegit.kernel.org
Upstream source description

In the Linux kernel, the following vulnerability has been resolved: mm/huge_memory: transfer the pmd dirty bit to the folio on zap zap_huge_pmd_folio() propagates the pmd young bit to the folio for the file case, but not the dirty bit. The pte path does propagate it, in zap_present_folio_ptes() and so does the pmd split path, in __split_huge_pmd_locked(). For most file mappings the omission is harmless, because writing to a shared file mapping goes through page_mkwrite(), which dirties the folio. tmpfs is different: it has no page_mkwrite(), and vma_wants_writenotify() is false for it, so a *read* fault on a MAP_SHARED tmpfs mapping installs a writable pmd via do_read_fault(). do_read_fault() does not call fault_dirty_shared_page(), so subsequent stores through that mapping set only the hardware dirty bit in the pmd and never call folio_mark_dirty(). A shmem folio allocated by a fault is marked uptodate but not dirty (see the clear: block in shmem_get_folio_gfp()), so PG_dirty is never set at all. Unmapping such a folio - munmap(), or exit_mmap() when the process dies - then loses the only record that it was written, because zap_huge_pmd() drops the pmd without transferring the dirty bit. Reclaim afterwards sees a clean shmem folio: the whole swap-out block in shrink_folio_list() is inside "if (folio_test_dirty(folio))", so pageout() is skipped and the folio falls into __remove_mapping(). There, folio_is_file_lru() is false for a swapbacked folio, so no shadow entry is created and __filemap_remove_folio(folio, NULL) simply empties the i_pages slot. The data is freed without ever being written to swap, and the next fault on that index returns a freshly zeroed folio. This is silent data loss for any process that keeps state in a MAP_SHARED tmpfs segment across an unmap - for example a cache handed from one process generation to the next through /dev/shm. It requires the folio to be PMD-mapped, so it only shows up once shmem THP is enabled (which is what we did in Meta fleet and started noticing crashes); with THP off the pte path transfers the dirty bit correctly. It also only becomes visible when swap is enabled, because with no swap device shmem folios (which are on the anon LRU) are not scanned by reclaim at all, so the clean folio is never dropped. Reproduced on x86_64 with a tmpfs mounted huge=within_size: read-fault a 2MB-backed region, write a known pattern through the resulting mapping, munmap, force reclaim of the cgroup, then re-map and read back. Without this patch the region reads back as zeros and vmstat shows zswpout 0 - the data was discarded rather than swapped. With this patch the region reads back correctly and the pages are swapped out as expected. With huge=never, or when the first touch is a write, the test passes either way.

Quoted source text, attributed separately from HOL analysis.

Record context

Vulnerability class
Vulnerability
EPSS
Not reported
CWE IDs
Not reported
Source
CVE List V5
Source checked
Oct 31, 2026
References
8 linked sources
Open source record