CVE-2026-64295 (GCVE-0-2026-64295)

Vulnerability from cvelistv5 – Published: 2026-07-25 08:49 – Updated: 2026-07-25 08:49
VLAI
Title
mm: page_ext: add count limit to page_ext_iter_next to prevent invalid PFN access
Summary
In the Linux kernel, the following vulnerability has been resolved: mm: page_ext: add count limit to page_ext_iter_next to prevent invalid PFN access The page_ext iteration API does not validate if the PFN still belongs to a valid section while advancing the iterator. When dynamically adding memory in the hotplug path, it can lead to a NULL pointer dereference during page_ext_lookup at the boundary of the last valid section when iterator count equals __pgcount. The for_each_page_ext() macro calls page_ext_iter_next() as its loop increment. for_each_page_ext() does a "__page_ext = page_ext_iter_next(&__iter)" at the end. This causes page_ext_iter_next() to increment iter->index past __pgcount and call page_ext_lookup(start_pfn + __pgcount). During memory hotplug (online), the PFN at start_pfn + __pgcount may belong to a section that has not yet been initialized, causing page_ext_lookup() to trigger a NULL pointer dereference. [ 14.555124][ T846] Call trace: [ 14.555125][ T846] lookup_page_ext+0x6c/0x108 (P) [ 14.555127][ T846] page_ext_lookup+0x30/0x3c [ 14.555129][ T846] __reset_page_owner+0x11c/0x260 [ 14.571201][ T846] __free_pages_ok+0x5e8/0x8e0 [ 14.571204][ T846] __free_pages_core+0x78/0xf0 [ 14.571206][ T846] generic_online_page+0x14/0x24 [ 14.597782][ T846] online_pages+0x178/0x30c [ 14.597784][ T846] memory_block_change_state+0x284/0x32c [ 14.597787][ T846] memory_subsys_online+0x4c/0x64 [ 14.597789][ T846] device_online+0x88/0xb0 [ 14.597791][ T846] online_memory_block+0x30/0x40 [ 14.597793][ T846] walk_memory_blocks+0xac/0xe8 [ 14.597794][ T846] add_memory_resource+0x280/0x298 [ 14.656161][ T846] add_memory+0x60/0x98 Move the iteration boundary enforcement inside the iterator functions, so callers cannot inadvertently access beyond the requested range.
Severity
No CVSS data available.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 9039b9096ea27a20f0349d1537537663c935c8ed , < 8dcaa0f87a88d720d13106f3a306c6b61d189d86 (git)
Affected: 9039b9096ea27a20f0349d1537537663c935c8ed , < 377b1cd6bbcf327338cd951cc2fd74bc75540235 (git)
Affected: 9039b9096ea27a20f0349d1537537663c935c8ed , < ffd017237cfe99e6e5602ab14179b0e6878a0840 (git)
Create a notification for this product.
Linux Linux Affected: 6.15
Unaffected: 0 , < 6.15 (semver)
Unaffected: 6.18.39 , ≤ 6.18.* (semver)
Unaffected: 7.1.4 , ≤ 7.1.* (semver)
Unaffected: 7.2-rc3 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "include/linux/page_ext.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "8dcaa0f87a88d720d13106f3a306c6b61d189d86",
              "status": "affected",
              "version": "9039b9096ea27a20f0349d1537537663c935c8ed",
              "versionType": "git"
            },
            {
              "lessThan": "377b1cd6bbcf327338cd951cc2fd74bc75540235",
              "status": "affected",
              "version": "9039b9096ea27a20f0349d1537537663c935c8ed",
              "versionType": "git"
            },
            {
              "lessThan": "ffd017237cfe99e6e5602ab14179b0e6878a0840",
              "status": "affected",
              "version": "9039b9096ea27a20f0349d1537537663c935c8ed",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "include/linux/page_ext.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.15"
            },
            {
              "lessThan": "6.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.39",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2-rc3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.39",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.4",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2-rc3",
                  "versionStartIncluding": "6.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm: page_ext: add count limit to page_ext_iter_next to prevent invalid PFN access\n\nThe page_ext iteration API does not validate if the PFN still belongs to a\nvalid section while advancing the iterator.  When dynamically adding\nmemory in the hotplug path, it can lead to a NULL pointer dereference\nduring page_ext_lookup at the boundary of the last valid section when\niterator count equals __pgcount.\n\nThe for_each_page_ext() macro calls page_ext_iter_next() as its loop\nincrement.  for_each_page_ext() does a \"__page_ext =\npage_ext_iter_next(\u0026__iter)\" at the end.  This causes page_ext_iter_next()\nto increment iter-\u003eindex past __pgcount and call page_ext_lookup(start_pfn\n+ __pgcount).  During memory hotplug (online), the PFN at start_pfn +\n__pgcount may belong to a section that has not yet been initialized,\ncausing page_ext_lookup() to trigger a NULL pointer dereference.\n\n[   14.555124][  T846] Call trace:\n[   14.555125][  T846]  lookup_page_ext+0x6c/0x108 (P)\n[   14.555127][  T846]  page_ext_lookup+0x30/0x3c\n[   14.555129][  T846]  __reset_page_owner+0x11c/0x260\n[   14.571201][  T846]  __free_pages_ok+0x5e8/0x8e0\n[   14.571204][  T846]  __free_pages_core+0x78/0xf0\n[   14.571206][  T846]  generic_online_page+0x14/0x24\n[   14.597782][  T846]  online_pages+0x178/0x30c\n[   14.597784][  T846]  memory_block_change_state+0x284/0x32c\n[   14.597787][  T846]  memory_subsys_online+0x4c/0x64\n[   14.597789][  T846]  device_online+0x88/0xb0\n[   14.597791][  T846]  online_memory_block+0x30/0x40\n[   14.597793][  T846]  walk_memory_blocks+0xac/0xe8\n[   14.597794][  T846]  add_memory_resource+0x280/0x298\n[   14.656161][  T846]  add_memory+0x60/0x98\n\nMove the iteration boundary enforcement inside the iterator functions, so\ncallers cannot inadvertently access beyond the requested range."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-07-25T08:49:33.194Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/8dcaa0f87a88d720d13106f3a306c6b61d189d86"
        },
        {
          "url": "https://git.kernel.org/stable/c/377b1cd6bbcf327338cd951cc2fd74bc75540235"
        },
        {
          "url": "https://git.kernel.org/stable/c/ffd017237cfe99e6e5602ab14179b0e6878a0840"
        }
      ],
      "title": "mm: page_ext: add count limit to page_ext_iter_next to prevent invalid PFN access",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-64295",
    "datePublished": "2026-07-25T08:49:33.194Z",
    "dateReserved": "2026-07-19T15:36:31.778Z",
    "dateUpdated": "2026-07-25T08:49:33.194Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-64295",
      "date": "2026-07-27",
      "epss": "0.00203",
      "percentile": "0.10506"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-64295\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-07-25T10:17:10.277\",\"lastModified\":\"2026-07-25T10:17:10.277\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nmm: page_ext: add count limit to page_ext_iter_next to prevent invalid PFN access\\n\\nThe page_ext iteration API does not validate if the PFN still belongs to a\\nvalid section while advancing the iterator.  When dynamically adding\\nmemory in the hotplug path, it can lead to a NULL pointer dereference\\nduring page_ext_lookup at the boundary of the last valid section when\\niterator count equals __pgcount.\\n\\nThe for_each_page_ext() macro calls page_ext_iter_next() as its loop\\nincrement.  for_each_page_ext() does a \\\"__page_ext =\\npage_ext_iter_next(\u0026__iter)\\\" at the end.  This causes page_ext_iter_next()\\nto increment iter-\u003eindex past __pgcount and call page_ext_lookup(start_pfn\\n+ __pgcount).  During memory hotplug (online), the PFN at start_pfn +\\n__pgcount may belong to a section that has not yet been initialized,\\ncausing page_ext_lookup() to trigger a NULL pointer dereference.\\n\\n[   14.555124][  T846] Call trace:\\n[   14.555125][  T846]  lookup_page_ext+0x6c/0x108 (P)\\n[   14.555127][  T846]  page_ext_lookup+0x30/0x3c\\n[   14.555129][  T846]  __reset_page_owner+0x11c/0x260\\n[   14.571201][  T846]  __free_pages_ok+0x5e8/0x8e0\\n[   14.571204][  T846]  __free_pages_core+0x78/0xf0\\n[   14.571206][  T846]  generic_online_page+0x14/0x24\\n[   14.597782][  T846]  online_pages+0x178/0x30c\\n[   14.597784][  T846]  memory_block_change_state+0x284/0x32c\\n[   14.597787][  T846]  memory_subsys_online+0x4c/0x64\\n[   14.597789][  T846]  device_online+0x88/0xb0\\n[   14.597791][  T846]  online_memory_block+0x30/0x40\\n[   14.597793][  T846]  walk_memory_blocks+0xac/0xe8\\n[   14.597794][  T846]  add_memory_resource+0x280/0x298\\n[   14.656161][  T846]  add_memory+0x60/0x98\\n\\nMove the iteration boundary enforcement inside the iterator functions, so\\ncallers cannot inadvertently access beyond the requested range.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"include/linux/page_ext.h\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"9039b9096ea27a20f0349d1537537663c935c8ed\",\"lessThan\":\"8dcaa0f87a88d720d13106f3a306c6b61d189d86\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"9039b9096ea27a20f0349d1537537663c935c8ed\",\"lessThan\":\"377b1cd6bbcf327338cd951cc2fd74bc75540235\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"9039b9096ea27a20f0349d1537537663c935c8ed\",\"lessThan\":\"ffd017237cfe99e6e5602ab14179b0e6878a0840\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"include/linux/page_ext.h\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.15\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.15\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.39\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.4\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2-rc3\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/377b1cd6bbcf327338cd951cc2fd74bc75540235\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/8dcaa0f87a88d720d13106f3a306c6b61d189d86\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ffd017237cfe99e6e5602ab14179b0e6878a0840\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "suse_vex": {
      "aggregate_severity": "not set",
      "current_release_date": "2026-07-25T16:46:21Z",
      "cve": "CVE-2026-64295",
      "id": "CVE-2026-64295",
      "initial_release_date": "2026-07-25T16:46:21Z",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-64295",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-64295.json",
      "version": "2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…