0.0
NA
CVE-2026-74599
mm/ptdump: always stabilise against page table freeing using init_mm
Description

In the Linux kernel, the following vulnerability has been resolved: mm/ptdump: always stabilise against page table freeing using init_mm Previous commits have established the invariant that kernel page table freeing is performed while an mmap read lock on init_mm is held, which fixes races between ptdump and kernel page table freeing over init_mm. However, x86 and arm64 can perform a ptdump over an mm other than init_mm via ptdump_walk_pgd() and since kernel memory ranges are shared across non-kernel mm's, this means that the race still exists for these cases. Fix this by acquiring a nested mmap write lock for init_mm in ptdump_walk_pgd(). This is safe as we take this after mmap write locking the mm, and nothing acquires the init_mm lock first before locking an arbitrary mm, so no deadlock is possible. Also update walk_page_range_debug() to assert that init_mm is write locked, add a comment explaining why and remove some redundant code, and eliminate the unnecessary and confusing invocation of walk_kernel_page_table_range(). We can safely remove the non-NULL check for walk.mm, as the mmap lock asserts would NULL pointer deref if it was (and of course no callers do this). The first point at which ptdump can race kernel page table freeing is commit b6bdb7517c3d ("mm/vmalloc: add interfaces to free unmapped page table"), so we target this in the Fixes tag.

INFO

Published Date :

Aug. 22, 2026, 4:16 p.m.

Last Modified :

Aug. 22, 2026, 4:16 p.m.

Remotely Exploit :

No

Source :

416baaa9-dc9f-4396-8d5f-8c081fb06d67
Affected Products

The following products are affected by CVE-2026-74599 vulnerability. Even if cvefeed.io is aware of the exact versions of the products that are affected, the information is not represented in the table below.

ID Vendor Product Action
1 Linux linux_kernel
Solution
Acquire a nested mmap write lock in ptdump_walk_pgd to prevent race conditions.
  • Acquire a nested mmap write lock for init_mm in ptdump_walk_pgd.
  • Update walk_page_range_debug to assert init_mm write lock.
  • Remove redundant code and confusing invocations.
  • Remove the non-NULL check for walk.mm.
References to Advisories, Solutions, and Tools

Here, you will find a curated list of external links that provide in-depth information, practical solutions, and valuable tools related to CVE-2026-74599.

URL Resource
https://git.kernel.org/stable/c/27c32e5538344b13c1505a08861e04620c125d47
https://git.kernel.org/stable/c/4adc4c9a9a43d61fe476dfe10811f3df2e7e4106
https://git.kernel.org/stable/c/7f740664aec1f832953c2e6d9b8920cd6c8bcc0c
CWE - Common Weakness Enumeration

While CVE identifies specific instances of vulnerabilities, CWE categorizes the common flaws or weaknesses that can lead to vulnerabilities. CVE-2026-74599 is associated with the following CWEs:

Common Attack Pattern Enumeration and Classification (CAPEC)

Common Attack Pattern Enumeration and Classification (CAPEC) stores attack patterns, which are descriptions of the common attributes and approaches employed by adversaries to exploit the CVE-2026-74599 weaknesses.

We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).

Results are limited to the first 15 repositories due to potential performance issues.

The following list is the news that have been mention CVE-2026-74599 vulnerability anywhere in the article.

The following table lists the changes that have been made to the CVE-2026-74599 vulnerability over time.

Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.

  • New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67

    Aug. 22, 2026

    Action Type Old Value New Value
    Added Affected [{'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': 'b6bdb7517c3d3f41f20e5c2948d6bc3f8897394e', 'lessThan': '7f740664aec1f832953c2e6d9b8920cd6c8bcc0c', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6bdb7517c3d3f41f20e5c2948d6bc3f8897394e', 'lessThan': '4adc4c9a9a43d61fe476dfe10811f3df2e7e4106', 'versionType': 'git'}, {'status': 'affected', 'version': 'b6bdb7517c3d3f41f20e5c2948d6bc3f8897394e', 'lessThan': '27c32e5538344b13c1505a08861e04620c125d47', 'versionType': 'git'}, {'status': 'affected', 'version': '31895cfd79564111cdd5a9f48c5d491ae26a238e', 'versionType': 'git'}, {'status': 'affected', 'version': '9c7f7bdb1932f8c1e5f80d32c717184701afe701', 'versionType': 'git'}, {'status': 'affected', 'version': 'acdb4981644c8e31ccee294bdefff475c0cf587b', 'versionType': 'git'}, {'status': 'affected', 'version': '0454e2fad9306961540ee7e84da47a8e345b7d22', 'versionType': 'git'}, {'status': 'affected', 'version': '4.4.125', 'lessThan': '4.5', 'versionType': 'semver'}, {'status': 'affected', 'version': '4.9.91', 'lessThan': '4.10', 'versionType': 'semver'}, {'status': 'affected', 'version': '4.14.31', 'lessThan': '4.15', 'versionType': 'semver'}, {'status': 'affected', 'version': '4.15.14', 'lessThan': '4.16', 'versionType': 'semver'}], 'programFiles': ['mm/pagewalk.c', 'mm/ptdump.c'], 'defaultStatus': 'unaffected'}, {'repo': 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git', 'vendor': 'Linux', 'product': 'Linux', 'versions': [{'status': 'affected', 'version': '4.16'}, {'status': 'unaffected', 'version': '0', 'lessThan': '4.16', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '6.18.45', 'versionType': 'semver', 'lessThanOrEqual': '6.18.*'}, {'status': 'unaffected', 'version': '7.1.9', 'versionType': 'semver', 'lessThanOrEqual': '7.1.*'}, {'status': 'unaffected', 'version': '7.2', 'versionType': 'original_commit_for_fix', 'lessThanOrEqual': '*'}], 'programFiles': ['mm/pagewalk.c', 'mm/ptdump.c'], 'defaultStatus': 'affected'}]
    Added Description In the Linux kernel, the following vulnerability has been resolved: mm/ptdump: always stabilise against page table freeing using init_mm Previous commits have established the invariant that kernel page table freeing is performed while an mmap read lock on init_mm is held, which fixes races between ptdump and kernel page table freeing over init_mm. However, x86 and arm64 can perform a ptdump over an mm other than init_mm via ptdump_walk_pgd() and since kernel memory ranges are shared across non-kernel mm's, this means that the race still exists for these cases. Fix this by acquiring a nested mmap write lock for init_mm in ptdump_walk_pgd(). This is safe as we take this after mmap write locking the mm, and nothing acquires the init_mm lock first before locking an arbitrary mm, so no deadlock is possible. Also update walk_page_range_debug() to assert that init_mm is write locked, add a comment explaining why and remove some redundant code, and eliminate the unnecessary and confusing invocation of walk_kernel_page_table_range(). We can safely remove the non-NULL check for walk.mm, as the mmap lock asserts would NULL pointer deref if it was (and of course no callers do this). The first point at which ptdump can race kernel page table freeing is commit b6bdb7517c3d ("mm/vmalloc: add interfaces to free unmapped page table"), so we target this in the Fixes tag.
    Added Reference https://git.kernel.org/stable/c/27c32e5538344b13c1505a08861e04620c125d47
    Added Reference https://git.kernel.org/stable/c/4adc4c9a9a43d61fe476dfe10811f3df2e7e4106
    Added Reference https://git.kernel.org/stable/c/7f740664aec1f832953c2e6d9b8920cd6c8bcc0c
EPSS is a daily estimate of the probability of exploitation activity being observed over the next 30 days. Following chart shows the EPSS score history of the vulnerability.