CVE Intelligence
High

CVE-2026-98507 — mm/rmap: fix missing barrier between anon_vma init and vma->anon_vma publish

In the Linux kernel, the following vulnerability has been resolved: mm/rmap: fix missing barrier between anon_vma init and vma->anon_vma publish On arm64 server, we find that a task trying to grab the anon_vma lock triggers hungtask. INFO: task main:2354726 blocked for more than 120 seconds. Tainted: G E 5.10.0-0021.aarch64 #1 "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. task:main state:D stack: 0 pid:2354726 ppid:2350673 flags:0x00000a01 Call trace: __switch_to+0x7c/0xbc __schedule+0x3b4/0x8a0 schedule+0x50/0xe0 rwsem_down_write_slowpath+0x3cc/0x6cc down_write+0x60/0x260 __anon_vma_prepare+0x6c/0x210 do_anonymous_page+0x258/0x660 handle_pte_fault+0x188/0x214 __handle_mm_fault+0x1b0/0x380 handle_mm_fault+0xf4/0x284 do_page_fault+0x19c/0x494 do_translation_fault+0xcc/0xf8 do_mem_abort+0x48/0xac el0_da+0x44/0x80 el0_sync_handler+0x88/0xb4 el0_sync+0x160/0x180 After analyzing the vmcore, we found the anon_vma->root->rwsem.count is -1. There is another anon_vma whose anon_vma->root->rwsem.count is 1, the anon_vma->root->rwsem.owner shows the lock is held, but the stack of the task shows the task doesn't hold the anon_vma lock. After adding more debugging info, we found __anon_vma_prepare() reuses anon_vma and triggers the UAF of anon_vma->root due to missing memory barrier, leading to locking and unlocking two different anon_vma->root, thus leading to an anon_vma will never be unlocked, and another anon_vma couldn't be locked anymore. This race requires two adjacent VMAs that are not merged but are anon_vma-compatible (e.g., they differ in VMA_ACCESS_FLAGS that can be changed by mprotect()). Two threads fault on each VMA concurrently, both calling __anon_vma_prepare() with only mmap_lock held for reading. THREAD A THREAD B __anon_vma_prepare __anon_vma_prepare find_mergeable_anon_vma() -> NULL anon_vma = anon_vma_alloc(); anon_vma->root = anon_vma; // the two stores may be reordered vma->anon_vma = anon_vma; // finds A's anon_vma anon_vma = find_mergeable_anon_vma(vma); anon_vma_lock_write(anon_vma); // may still see the old root down_write(&anon_vma->root->rwsem); anon_vma_unlock_write(anon_vma); // see the new root, never unlock old up_write(&anon_vma->root->rwsem); thread A triggers page fault and calls __anon_vma_prepare() to prepare anon_vma for the faulting vma. __anon_vma_prepare() allocates and initializes a new anon_vma, and then publishes it to the vma with a plain store. anon_vma_prepare() only requires the mmap_lock to be held for reading, so two threads can fault on adjacent VMAs at the same time. While thread A publishes a new anon_vma, thread B could find the anon_vma via find_mergeable_anon_vma() and then locks anon_vma->root->rwsem. The store to anon_vma->root in anon_vma_alloc() and the store to vma->anon_vma can be reordered. The anon_vma_lock_write() and spin_lock() only provide acquire semantics, which do not prevent prior stores from being reordered after them. The release semantics of the corresponding spin_unlock() and anon_vma_unlock_write() come too late, the store to vma->anon_vma is already published before they take effect. As a result, thread B can observe the following order: vma->anon_vma = anon_vma; anon_vma->root = anon_vma; The anon_vma slab is SLAB_TYPESAFE_BY_RCU, so a newly allocated anon_vma may reuse memory from a previously freed one. The constructor (anon_vma_ctor) does not reset anon_vma->root, and __put_anon_vma() doesn't clear it either, so the old root value persists until anon_vma_alloc() overwrites it. If that store isn't v ---truncated---

Published Oct 18, 2026 · Updated Oct 30, 2026 · Sources: NIST National Vulnerability Database, CVE Program (cve.org) e CISA ADP, GitHub Security Advisories · CNA: Linux

Who exploits it and how urgent it is

A 0–100 score combining confirmed exploitation, ransomware and APT use, public exploits, EPSS and severity.

No exploitation signal in the sources consulted so far.
How the score was calculated
  • EPSS 0.2% (30-day exploitation probability)+1
  • Technical severity (high)+6

The score orders the patch queue; it does not replace your asset context (internet exposure, criticality, compensating controls).

Triage

Is it exploited, how likely is exploitation, what does it touch, and how severe do the sources call it.

Exploitation
Not confirmed
Not in CISA KEV — an absence of record, not proof it is unexploited.
EPSS FIRST
0.16%
ahead of 6% of scored CVEs · Oct 30, 2026
Affects
Linux
Linux
CVSS base
7.8
High · 3 source(s)

Remediation

Fixes and mitigations documented by the sources — linked to the original advisory.

No fix documented by the sources we poll. That does not mean none exists: check the vendor advisory.

First 24 hours

Ordered from the record’s own fields — exposure first, because you cannot patch what you have not found. A rule-generated starting point.

  1. Identify exposed assets running the affected vendor/product/version combinations (Linux Linux).
  2. No fix documented in the sources: reduce exposure and monitor the vendor advisory.
  3. Search available logs for exploit probes, errors and authentication anomalies.

Affected scope

Vendor, product and versions as the sources word them.

VendorProductVersionsStatusSource
Linux Linux ≥ 5c341ee1dfc8fe69d66b1c8b19e463c6d7201ae1 and < a500df43cde075f6ea4b8bae495d89f2c35b3e16≥ 5c341ee1dfc8fe69d66b1c8b19e463c6d7201ae1 and < 4cef512a955e4008ae4436a4fc97726976df1fdf≥ 5c341ee1dfc8fe69d66b1c8b19e463c6d7201ae1 and < d348a715380bfcc6a611bdf722169d53fd01e735≥ 5c341ee1dfc8fe69d66b1c8b19e463c6d7201ae1 and < b6ac0b3f6013c168f22cad97e79967accacb08e1version 2.6.36≥ 5c341ee1dfc8fe69d66b1c8b19e463c6d7201ae1 and < 465e222815c8839445d09028fa4c77e70f7f1c7d≥ 5c341ee1dfc8fe69d66b1c8b19e463c6d7201ae1 and < badedec499f6320742368c73fa77cd63dcf8ca55≥ 5c341ee1dfc8fe69d66b1c8b19e463c6d7201ae1 and < aef0f69b515af1c8a4147f68a46b6b81854f46f7
and 1 more ≥ 5c341ee1dfc8fe69d66b1c8b19e463c6d7201ae1 and < 7d103fc7b836084af585d9d3471334624354cf26
Vulnerable CVE Program (cve.org) e CISA ADP

Attack characteristics

The CVSS vector, decoded. It describes the attack, not your exposure to it.

Attack vector
Local
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Every base score collected

Sources score independently and may disagree; each row says who scored it and under which version.

ScoreVersionSeverityExpl.ImpactScored by
7.8 CVSS 3.1 High 1.8 5.9 416baaa9-dc9f-4396-8d5f-8c081fb06d67 via NIST National Vulnerability Database
7.8 CVSS 3.1 High — — GitHub, Inc. via GitHub Security Advisories
7.8 CVSS 3.1 High — — Linux via CVE Program (cve.org) e CISA ADP
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (score shown at the top: 416baaa9-dc9f-4396-8d5f-8c081fb06d67)

EPSS over time FIRST

Oct 19, 2026 → Oct 30, 2026 · 12 reading(s) · max 0.20%

Detection

Read off the CVSS vector and the weakness class. Starting points, not tested rules.

  • Local/physical vector: focus on endpoint telemetry (EDR) from affected hosts.
endpoint telemetry (EDR)

Timeline

What happened to this CVE, newest first.

  • 2026
  • Affected products added · linux/linux
    Oct 30, 2026 · CVE Program (cve.org) e CISA ADP
  • CVSS changed · 7.8
    Oct 24, 2026 · NIST National Vulnerability Database
  • Affected products added · linux/linux
    Oct 21, 2026 · CVE Program (cve.org) e CISA ADP
  • Record published
    Oct 18, 2026
  • Affected products added · linux/linux
    Oct 18, 2026 · CVE Program (cve.org) e CISA ADP
  • Source status changed · → Received
    Oct 18, 2026 · NIST National Vulnerability Database
  • Record created in this database
    Oct 18, 2026 · NIST National Vulnerability Database
  • CVE published
    Oct 18, 2026 · Linux

Source activity

Repeated readings are counted rather than listed.

  • 3× References added · Oct 19, 2026 – Oct 30, 2026
  • 1× Official description updated · Oct 18, 2026 – Oct 18, 2026

References

10 on the record

Elsewhere on this site

Linux
every CVE for this vendor

Related CVEs (same products)

  • High CVE-2026-99216 Drivers: hv: Don't reset VMBus connection state on error/exit paths 3d
  • Unknown CVE-2026-99215 power: supply: core: prevent unregistering a power supply while a callback runs 3d
  • Unknown CVE-2026-99207 scsi: target: Disable interrupts while holding delayed_cmd_lock 3d
  • Unknown CVE-2026-99208 drm/xe/oa: Zero OA buffer at allocation 3d
  • Unknown CVE-2026-99209 drm/xe: skip eviction of a BO with no resource 3d
  • Unknown CVE-2026-99210 accel/rocket: clear rdev on device init failure 3d

Not in any source we poll

Listed rather than left blank: an empty field and an unmeasured one look identical on screen, and only one is a reason to look elsewhere.

  • No fixed version, patch or mitigation documented.
  • No CISA SSVC assessment.
  • No CWE classification.
  • No confirmed IOCs, IP addresses, domains, file hashes, or malware artifacts supplied.
  • No organization-specific asset inventory, compensating-control status, or patch deployment evidence supplied.
  • No exploit packet captures, log samples, or incident case IDs supplied.

Answered from this record

Text assembled only from the fields above — no additional claims.

What should defenders know first?

CVE-2026-98507 is "mm/rmap: fix missing barrier between anon_vma init and vma->anon_vma publish", rated High. It affects Linux (Linux); versions are in the scope table. It is not in CISA KEV, which does not rule out exploitation. CVSS 7.8 describes technical severity. EPSS 0.16% estimates the probability of exploitation in 30 days; neither replaces your asset context. First verify whether exposed or business-critical assets run the affected versions, apply vendor fixes or mitigations, and preserve logs for review.

Comments

Moderated technical discussion. Read the community guidelines.

No comments yet.

Sign in or create an account to comment and suggest corrections.