CVE-2026-93176 (GCVE-0-2026-93176)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:12 – Updated: 2026-09-18 17:56
VLAI
Title
drm/amd/display: Fix dangling pointer in plane reset function
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/amd/display: Fix dangling pointer in plane reset function amdgpu_dm_plane_drm_plane_reset() frees the old state before allocating a new one. If kzalloc() fails, the function returns without updating the state pointer, leaving a dangling pointer to already freed memory. Fix this by allocating the new state first. On allocation failure, the old state remains untouched and the function safely returns. Found by Linux Verification Center (linuxtesting.org) with SVACE. [adjust for movement around current amd-staging-drm-next]
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 5d945cbcd4b16a29d6470a80dfb19738f9a4319f , < 80c0f51aced43d6eaf72f95a2833b0a77cf7880d (git)
Affected: 5d945cbcd4b16a29d6470a80dfb19738f9a4319f , < 98cad4bd1443975d972f4c7f705980da03722a22 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.0
Unaffected: 0 , < 6.0 (semver)
Unaffected: 7.2.6 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "80c0f51aced43d6eaf72f95a2833b0a77cf7880d",
              "status": "affected",
              "version": "5d945cbcd4b16a29d6470a80dfb19738f9a4319f",
              "versionType": "git"
            },
            {
              "lessThan": "98cad4bd1443975d972f4c7f705980da03722a22",
              "status": "affected",
              "version": "5d945cbcd4b16a29d6470a80dfb19738f9a4319f",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.0"
            },
            {
              "lessThan": "6.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amd/display: Fix dangling pointer in plane reset function\n\namdgpu_dm_plane_drm_plane_reset() frees the old state before allocating\na new one. If kzalloc() fails, the function returns without updating\nthe state pointer, leaving a dangling pointer to already freed memory.\n\nFix this by allocating the new state first. On allocation failure, the\nold state remains untouched and the function safely returns.\n\nFound by Linux Verification Center (linuxtesting.org) with SVACE.\n\n[adjust for movement around current amd-staging-drm-next]"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The UAF is in amdgpu_dm_plane_drm_plane_reset() after plane-\u003estate is already live, reached from drm_mode_config_reset() in drm_atomic_helper_resume() via dm_destroy_cached_state() in dm_resume(). Callers are local: amdgpu_pmops_resume (S3/S0ix) and amdgpu_drm_ioctl then pm_runtime_get_sync then amdgpu_pmops_runtime_resume. No network protocol message is involved.\nAC:H - The dangling plane-\u003estate exists only when kzalloc of struct dm_plane_state fails after amdgpu_dm_plane_drm_plane_destroy_state() has already kfree\u0027d the previous state. That GFP_KERNEL miss during dm_resume()/drm_mode_config_reset() is not reliably attacker-controlled.\nPR:L - amdgpu_drm_ioctl() issues pm_runtime_get_sync() with no capable() check, so any local user who can open /dev/dri/renderD* or card* (typical video/render-group access) can runtime-resume into dm_resume() and drm_mode_config_reset(). This is not init-namespace root.\nUI:N - The attacker opens the DRM node and issues their own ioctl to drive amdgpu_pmops_runtime_resume() into dm_resume(), or initiates their own session suspend/resume; no separate victim must mount media, attach a display, or accept a prompt.\nS:U - The freed object is the host-kernel struct dm_plane_state stored in drm_plane.state by amdgpu_dm; the UAF stays in the same kernel security authority and is not a KVM/Xen, IOMMU, or sandbox escape.\nC:H - After the kfree, drm_atomic_helper_commit_duplicated_state() stores the dangling plane-\u003estate as old_state and amdgpu_dm_plane_drm_plane_duplicate_state() uses to_dm_plane_state(plane-\u003estate) to read dc_state and degamma/ctm/lut blobs from the freed heap object.\nI:H - drm_atomic_helper_swap_state() later calls atomic_destroy_state() on that already-freed plane-\u003estate (double-free), and duplicate_state copies reclaimed dc_state/fb pointers into the new live dm_plane_state, enabling a kernel write and control-flow hijack.\nA:H - drm_atomic_helper_resume() uses the freed plane-\u003estate immediately in drm_atomic_helper_commit_duplicated_state(), and DRM_IOCTL_MODE_GETPLANE loads plane-\u003estate-\u003ecrtc/fb; either path oopses or panics the host."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-18T17:56:22.149Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/80c0f51aced43d6eaf72f95a2833b0a77cf7880d"
        },
        {
          "url": "https://git.kernel.org/stable/c/98cad4bd1443975d972f4c7f705980da03722a22"
        }
      ],
      "title": "drm/amd/display: Fix dangling pointer in plane reset function",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-93176",
    "datePublished": "2026-09-17T16:12:05.278Z",
    "dateReserved": "2026-09-17T16:02:15.090Z",
    "dateUpdated": "2026-09-18T17:56:22.149Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-93176",
      "date": "2026-09-25",
      "epss": "0.00141",
      "percentile": "0.02831"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "80c0f51aced43d6eaf72f95a2833b0a77cf7880d",
                    "status": "affected",
                    "version": "5d945cbcd4b16a29d6470a80dfb19738f9a4319f",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "98cad4bd1443975d972f4c7f705980da03722a22",
                    "status": "affected",
                    "version": "5d945cbcd4b16a29d6470a80dfb19738f9a4319f",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_plane.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.0"
                  },
                  {
                    "lessThan": "6.0",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amd/display: Fix dangling pointer in plane reset function\n\namdgpu_dm_plane_drm_plane_reset() frees the old state before allocating\na new one. If kzalloc() fails, the function returns without updating\nthe state pointer, leaving a dangling pointer to already freed memory.\n\nFix this by allocating the new state first. On allocation failure, the\nold state remains untouched and the function safely returns.\n\nFound by Linux Verification Center (linuxtesting.org) with SVACE.\n\n[adjust for movement around current amd-staging-drm-next]"
          }
        ],
        "id": "CVE-2026-93176",
        "lastModified": "2026-09-18T18:18:23.660",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.0,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.0,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-17T17:18:13.397",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/80c0f51aced43d6eaf72f95a2833b0a77cf7880d"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/98cad4bd1443975d972f4c7f705980da03722a22"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



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…

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…