Skip to main content

Linux Kernel CVE-2026-63950

| EUVDEUVD-2026-45723 HIGH
2026-07-19 Linux GHSA-9fqf-4mvh-6fx9
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
4.7 MEDIUM

Local low-priv trigger with an elaborate HMM device-exclusive + reclaim setup (AC:H); demonstrated impact is a kernel crash (A:H) with no confirmed confidentiality/integrity loss.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
7.0 HIGH
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Red Hat
7.0 HIGH
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 16:30 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
7.8 (HIGH)
Patch available
Jul 19, 2026 - 17:19 EUVD
CVE Published
Jul 19, 2026 - 14:55 cve.org
HIGH 7.8
CVE Published
Jul 19, 2026 - 14:55 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

mm/rmap: initialize nr_pages to 1 at loop start in try_to_unmap_one

Initialize nr_pages to 1 at the start of each loop iteration, like folio_referenced_one() does.

Without this, nr_pages computed by a previous folio_unmap_pte_batch() call can be reused on a later iteration that does not run folio_unmap_pte_batch() again.

mmap a 64K large folio with MAP_ANONYMOUS | MAP_DROPPABLE, then call madvise(MADV_FREE), then make the last page device-exclusive via HMM_DMIRROR_EXCLUSIVE.

Trigger node reclaim through sysfs. Now, in try_to_unmap_one(), we will first clear the first 15 out of 16 entries mapping the lazyfree folio. This will set nr_pages to 15. In the next pvmw walk, this nr_pages gets reused on a device-exclusive pte, thus potentially corrupting folio refcount/mapcount.

At the moment, I have a userspace program which can make the kernel spit out a trace, but the blow up is in folio_referenced_one(), because there are existing bugs in the interaction between device-private and rmap (which too I am investigating). I did a one liner kernel change to avoid going into folio_referenced_one(), and the kernel blows up at folio_remove_rmap_ptes in try_to_unmap_one which is what I wanted.

Note that the bug is there not since file folio batching but lazyfree folio batching, since device-exclusive only works for anonymous folios.

Userspace visible effect is simply kernel crashing somewhere due to refcount/mapcount corruption.

AnalysisAI

Memory-management memory corruption in the Linux kernel's reverse-mapping (rmap) code lets a local, low-privileged user crash the system by corrupting folio refcount/mapcount state. The flaw lives in try_to_unmap_one() (mm/rmap.c), where the nr_pages counter is not reset to 1 at the start of each page-table-walk iteration, so a stale batch count from a prior lazyfree folio unmap is reused against a device-exclusive PTE. No public exploit identified at time of analysis and EPSS is low (0.20%, 10th percentile); the demonstrated userspace-visible effect is a kernel crash (denial of service).

Technical ContextAI

The bug is in the Linux memory-management subsystem, specifically the anonymous-folio unmap path try_to_unmap_one() in mm/rmap.c, which is invoked during reclaim/swap-out. Large (multi-page) anonymous folios are unmapped in batches via folio_unmap_pte_batch(), which computes nr_pages for a contiguous run of PTEs. Because nr_pages is not re-initialized to 1 at each page_vma_mapped_walk (pvmw) iteration - unlike the sibling routine folio_referenced_one() - a value left over from a previous batch (e.g. 15) is applied to a subsequent PTE that is device-exclusive (an HMM/ZONE_DEVICE exclusive entry created via HMM_DMIRROR_EXCLUSIVE). folio_remove_rmap_ptes() then adjusts refcount/mapcount by the wrong page count. This is a classic reference-counting/state-corruption defect (conceptually CWE-911 improper reference-count / CWE-787-adjacent out-of-bounds refcount accounting; the input lists CWE as N/A). It affects only anonymous folios because device-exclusive PTEs exist only for anonymous memory, and the defect was introduced with lazyfree folio batching rather than the earlier file-folio batching.

RemediationAI

Vendor-released patch: upgrade to a fixed stable kernel - 6.18.35 or later in the 6.18 series, 7.0.12 or later in the 7.0 series, or 7.1, which incorporate the one-line fix that re-initializes nr_pages to 1 at the start of each try_to_unmap_one() loop iteration (fix commits 0fcc34d0d8fefca4fea349e45c10e3a3d90350eb, f611db9b771b2b6775357555d2517af044fca4f0, 3f8968e9cbf95d5d87d32218906cab0b9b9eddbe at git.kernel.org/stable). Distribution users should apply the corresponding backported kernel package and reboot. Where immediate patching is not possible, reduce exposure by restricting access to the HMM device-exclusive path - do not load or grant unprivileged access to HMM test/mirror drivers (e.g. the hmm_dmirror test module) or GPU/accelerator drivers that create device-exclusive PTEs, since the corruption requires a device-exclusive entry; this trade-off disables device-exclusive DMA/GPU coherency features for those workloads. Limiting untrusted local users on affected hosts also lowers risk given the local (AV:L) attack vector.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Not-Affected

Share

CVE-2026-63950 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy