GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-68163 (GCVE-0-2026-68163)

Vulnerability from cvelistv5 – Published: 2026-08-10 11:59 – Updated: 2026-08-17 05:00
VLAI
Title
mm/page_vma_mapped: fix device-private PMD handling
Summary
In the Linux kernel, the following vulnerability has been resolved: mm/page_vma_mapped: fix device-private PMD handling Commit 65edfda6f3f2 ("mm/rmap: extend rmap and migration support device-private entries") introduced the concept of device-private PMD entries, but did not correctly update the rmap walk code to account for them. As a result, when page_vma_mapped_walk() encounters device-private PMD entries, it takes no action other than to acquire the PMD lock and exit. However this is highly problematic for two reasons - firstly, device private entries possess a PFN so check_pmd() needs to be called to ensure an overlapping PFN range. Secondly, and more importantly, if PVMW_MIGRATION is set the caller assumes the returned entry is a migration entry, resulting in memory corruption when the caller tries to interpret the device private entry as such. In addition, commit 146287290023 ("mm/huge_memory: implement device-private THP splitting") allowed device private PMDs to be split like THP mappings, but again did not update this code path. As a result, we might race a PMD split prior to acquiring the PMD lock. This patch addresses all of these issues by invoking check_pmd(), ensuring PMVW_MIGRATION is not set and checks whether a split raced us we do for PMD THP and migration entries. Instead of checking for a subset of the cases after taking the pmd_lock(), put device-private along with pmd_trans_huge() and pmd_is_migration_entry(). Also remove thp_migration_supported() as it is already guarded by pmd_is_migration_entry(). [akpm@linux-foundation.org: fix Raspberry Pi 1 build, per David]
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 65edfda6f3f2e58f757485a056e4f1775a1404a8 , < ab6209f4b48a98ef14d6766acdb62aa9bb32e670 (git)
Affected: 65edfda6f3f2e58f757485a056e4f1775a1404a8 , < f84ca9b1888d8fce7dfefe0e750fa971f8797486 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.19
Unaffected: 0 , < 6.19 (semver)
Unaffected: 7.1.6 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "mm/page_vma_mapped.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "ab6209f4b48a98ef14d6766acdb62aa9bb32e670",
              "status": "affected",
              "version": "65edfda6f3f2e58f757485a056e4f1775a1404a8",
              "versionType": "git"
            },
            {
              "lessThan": "f84ca9b1888d8fce7dfefe0e750fa971f8797486",
              "status": "affected",
              "version": "65edfda6f3f2e58f757485a056e4f1775a1404a8",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "mm/page_vma_mapped.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.19"
            },
            {
              "lessThan": "6.19",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.6",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "6.19",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmm/page_vma_mapped: fix device-private PMD handling\n\nCommit 65edfda6f3f2 (\"mm/rmap: extend rmap and migration support\ndevice-private entries\") introduced the concept of device-private PMD\nentries, but did not correctly update the rmap walk code to account for\nthem.\n\nAs a result, when page_vma_mapped_walk() encounters device-private PMD\nentries, it takes no action other than to acquire the PMD lock and exit.\n\nHowever this is highly problematic for two reasons - firstly, device\nprivate entries possess a PFN so check_pmd() needs to be called to ensure\nan overlapping PFN range.\n\nSecondly, and more importantly, if PVMW_MIGRATION is set the caller\nassumes the returned entry is a migration entry, resulting in memory\ncorruption when the caller tries to interpret the device private entry as\nsuch.\n\nIn addition, commit 146287290023 (\"mm/huge_memory: implement\ndevice-private THP splitting\") allowed device private PMDs to be split\nlike THP mappings, but again did not update this code path.\n\nAs a result, we might race a PMD split prior to acquiring the PMD lock.\n\nThis patch addresses all of these issues by invoking check_pmd(), ensuring\nPMVW_MIGRATION is not set and checks whether a split raced us we do for\nPMD THP and migration entries.\n\nInstead of checking for a subset of the cases after taking the pmd_lock(),\nput device-private along with pmd_trans_huge() and\npmd_is_migration_entry().  Also remove thp_migration_supported() as it is\nalready guarded by pmd_is_migration_entry().\n\n[akpm@linux-foundation.org: fix Raspberry Pi 1 build, per David]"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The bug is in the MM rmap/page-table walk reached only from in-kernel memory-management paths (migrate_vma finalize, rmap unmap/migration) triggered by local syscalls and GPU driver ioctls (AMD KFD, nouveau, drm_pagemap), not from network packet handling.\nAC:L - An attacker with GPU/HMM access can reliably create device-private THP PMDs and drive migrate_vma/setup/finalize while racing PMD splits via concurrent threads; both sides of the race are attacker-controlled, not dependent on admin timing or uncontrollable layout.\nPR:L - Exploitation needs only an unprivileged local user who can use the GPU/HMM stack (typical render/video group access on ML/cloud GPU nodes) to allocate device-private THP and invoke migration; it does not require real root in the init namespace.\nUI:N - No victim interaction is required; memory migration and PMD splitting are driven entirely by the attacker\u0027s own process through normal GPU unified-memory/migration APIs and concurrent threads.\nS:U - Impact is kernel page-table corruption and local privilege escalation within the host kernel security domain; it is not a VM guest-to-host escape, IOMMU bypass, or cross-authority sandbox breakout per kernel CVSS scope guidance.\nC:H - Misinterpreting a device-private PMD as a migration entry corrupts page tables and rmap state; such MM corruption is readily weaponizable for arbitrary kernel memory reads, not merely a bounded leak.\nI:H - The faulty walk causes remove_migration_pmd() and related callers to install incorrect PMD/PTE contents from mis-typed entries, enabling arbitrary kernel memory writes and control-flow hijack via page-table manipulation.\nA:H - Incorrect PMD handling during migration or concurrent THP splitting can cause kernel oops/panic, use-after-free conditions, or hung migration paths, producing full system denial of service even before successful exploitation."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:00:02.619Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/ab6209f4b48a98ef14d6766acdb62aa9bb32e670"
        },
        {
          "url": "https://git.kernel.org/stable/c/f84ca9b1888d8fce7dfefe0e750fa971f8797486"
        }
      ],
      "title": "mm/page_vma_mapped: fix device-private PMD handling",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-68163",
    "datePublished": "2026-08-10T11:59:30.633Z",
    "dateReserved": "2026-07-30T09:28:09.372Z",
    "dateUpdated": "2026-08-17T05:00:02.619Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-68163",
      "date": "2026-09-15",
      "epss": "0.00165",
      "percentile": "0.06102"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-68163\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-10T13:20:02.720\",\"lastModified\":\"2026-08-17T05:18:16.830\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nmm/page_vma_mapped: fix device-private PMD handling\\n\\nCommit 65edfda6f3f2 (\\\"mm/rmap: extend rmap and migration support\\ndevice-private entries\\\") introduced the concept of device-private PMD\\nentries, but did not correctly update the rmap walk code to account for\\nthem.\\n\\nAs a result, when page_vma_mapped_walk() encounters device-private PMD\\nentries, it takes no action other than to acquire the PMD lock and exit.\\n\\nHowever this is highly problematic for two reasons - firstly, device\\nprivate entries possess a PFN so check_pmd() needs to be called to ensure\\nan overlapping PFN range.\\n\\nSecondly, and more importantly, if PVMW_MIGRATION is set the caller\\nassumes the returned entry is a migration entry, resulting in memory\\ncorruption when the caller tries to interpret the device private entry as\\nsuch.\\n\\nIn addition, commit 146287290023 (\\\"mm/huge_memory: implement\\ndevice-private THP splitting\\\") allowed device private PMDs to be split\\nlike THP mappings, but again did not update this code path.\\n\\nAs a result, we might race a PMD split prior to acquiring the PMD lock.\\n\\nThis patch addresses all of these issues by invoking check_pmd(), ensuring\\nPMVW_MIGRATION is not set and checks whether a split raced us we do for\\nPMD THP and migration entries.\\n\\nInstead of checking for a subset of the cases after taking the pmd_lock(),\\nput device-private along with pmd_trans_huge() and\\npmd_is_migration_entry().  Also remove thp_migration_supported() as it is\\nalready guarded by pmd_is_migration_entry().\\n\\n[akpm@linux-foundation.org: fix Raspberry Pi 1 build, per David]\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"mm/page_vma_mapped.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"65edfda6f3f2e58f757485a056e4f1775a1404a8\",\"lessThan\":\"ab6209f4b48a98ef14d6766acdb62aa9bb32e670\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"65edfda6f3f2e58f757485a056e4f1775a1404a8\",\"lessThan\":\"f84ca9b1888d8fce7dfefe0e750fa971f8797486\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"mm/page_vma_mapped.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.19\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.19\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.6\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/ab6209f4b48a98ef14d6766acdb62aa9bb32e670\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/f84ca9b1888d8fce7dfefe0e750fa971f8797486\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-31T11:17:43+00:00",
      "cve": "CVE-2026-68163",
      "id": "CVE-2026-68163",
      "initial_release_date": "2026-08-10T00:00:00+00:00",
      "product_status:known_not_affected": "277",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: mm/page_vma_mapped: fix device-private PMD handling",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-68163.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-15T01:40:28Z",
      "cve": "CVE-2026-68163",
      "id": "CVE-2026-68163",
      "initial_release_date": "2026-08-13T16:23:59Z",
      "product_status:known_affected": "29",
      "product_status:known_not_affected": "345",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-68163",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-68163.json",
      "version": "4"
    }
  }
}



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…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…