CVE-2022-49203 (GCVE-0-2022-49203)
Vulnerability from cvelistv5
Published
2025-02-26 01:55
Modified
2026-08-05 08:54
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/amd/display: Fix double free during GPU reset on DC streams [Why] The issue only occurs during the GPU reset code path. We first backup the current state prior to commiting 0 streams internally from DM to DC. This state backup contains valid link encoder assignments. DC will clear the link encoder assignments as part of current state (but not the backup, since it was a copied before the commit) and free the extra stream reference it held. DC requires that the link encoder assignments remain cleared/invalid prior to commiting. Since the backup still has valid assignments we call the interface post reset to clear them. This routine also releases the extra reference that the link encoder interface held - resulting in a double free (and eventually a NULL pointer dereference). [How] We'll have to do a full DC commit anyway after GPU reset because the stream count previously went to 0. We don't need to retain the assignment that we had backed up, so just copy off of the now clean current state assignment after the reset has occcurred with the new link_enc_cfg_copy() interface.
Impacted products
Vendor Product Version
Linux Linux Version: 6d63fcc2a334f7bd15e4e9b1db50a19335d2af4f
Version: 6d63fcc2a334f7bd15e4e9b1db50a19335d2af4f
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "cvssV3_1": {
              "attackComplexity": "LOW",
              "attackVector": "LOCAL",
              "availabilityImpact": "HIGH",
              "baseScore": 5.5,
              "baseSeverity": "MEDIUM",
              "confidentialityImpact": "NONE",
              "integrityImpact": "NONE",
              "privilegesRequired": "LOW",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H",
              "version": "3.1"
            }
          },
          {
            "other": {
              "content": {
                "id": "CVE-2022-49203",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2025-10-01T19:47:11.954248Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "cweId": "CWE-415",
                "description": "CWE-415 Double Free",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2025-10-01T19:56:58.910Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c",
            "drivers/gpu/drm/amd/display/dc/core/dc_link_enc_cfg.c",
            "drivers/gpu/drm/amd/display/dc/inc/link_enc_cfg.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "bbfcdd6289ba6f00f0cd7d496946dce9f6c600ac",
              "status": "affected",
              "version": "6d63fcc2a334f7bd15e4e9b1db50a19335d2af4f",
              "versionType": "git"
            },
            {
              "lessThan": "32685b32d825ca08c5dec826477332df886c4743",
              "status": "affected",
              "version": "6d63fcc2a334f7bd15e4e9b1db50a19335d2af4f",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c",
            "drivers/gpu/drm/amd/display/dc/core/dc_link_enc_cfg.c",
            "drivers/gpu/drm/amd/display/dc/inc/link_enc_cfg.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.17"
            },
            {
              "lessThan": "5.17",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.17.*",
              "status": "unaffected",
              "version": "5.17.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "5.18",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.17.2",
                  "versionStartIncluding": "5.17",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.18",
                  "versionStartIncluding": "5.17",
                  "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 double free during GPU reset on DC streams\n\n[Why]\nThe issue only occurs during the GPU reset code path.\n\nWe first backup the current state prior to commiting 0 streams\ninternally from DM to DC. This state backup contains valid link\nencoder assignments.\n\nDC will clear the link encoder assignments as part of current state\n(but not the backup, since it was a copied before the commit) and\nfree the extra stream reference it held.\n\nDC requires that the link encoder assignments remain cleared/invalid\nprior to commiting. Since the backup still has valid assignments we\ncall the interface post reset to clear them. This routine also\nreleases the extra reference that the link encoder interface held -\nresulting in a double free (and eventually a NULL pointer dereference).\n\n[How]\nWe\u0027ll have to do a full DC commit anyway after GPU reset because\nthe stream count previously went to 0.\n\nWe don\u0027t need to retain the assignment that we had backed up, so\njust copy off of the now clean current state assignment after the\nreset has occcurred with the new link_enc_cfg_copy() interface."
        }
      ],
      "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 vulnerable path runs during amdgpu GPU recovery (dm_suspend/dm_resume), which an attacker reaches by submitting a hanging job through local DRM ioctls on /dev/dri/renderD* or card nodes, not via network or adjacent protocols.\nAC:L - An attacker can reliably force a GPU hang that fails soft recovery; on affected Navi/DCN ASICs need_full_reset is always true, so recovery always suspends/resumes DCE and hits the double-free path when displays are active.\nPR:L - Submitting command submissions via AMDGPU_CS requires only unprivileged access to a DRM render/primary node (typical video/render group or Android GPU access), not real root or init-namespace admin capabilities.\nUI:N - The attacker triggers the hang and recovery themselves; no separate victim action such as mounting a filesystem or opening a crafted file is required.\nS:U - The double free corrupts kernel heap state within the same OS kernel authority and does not cross a VM, IOMMU, or other security boundary.\nC:H - Double-free of heap-allocated dc_stream_state objects creates a use-after-free that can be abused for arbitrary kernel memory disclosure once the freed object is reallocated under attacker control.\nI:H - The same heap double-free/UAF enables classic reclaim and write primitives over kernel objects, which can be leveraged for control-flow hijacking or arbitrary kernel writes.\nA:H - Even without full exploitation, the double free leads to kernel oops/NULL dereference and GPU reset failure, crashing or hanging the system."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T08:54:23.108Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/bbfcdd6289ba6f00f0cd7d496946dce9f6c600ac"
        },
        {
          "url": "https://git.kernel.org/stable/c/32685b32d825ca08c5dec826477332df886c4743"
        }
      ],
      "title": "drm/amd/display: Fix double free during GPU reset on DC streams",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2022-49203",
    "datePublished": "2025-02-26T01:55:44.214Z",
    "dateReserved": "2025-02-26T01:49:39.291Z",
    "dateUpdated": "2026-08-05T08:54:23.108Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 5.5, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\", \"integrityImpact\": \"NONE\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"NONE\"}}, {\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2022-49203\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2025-10-01T19:47:11.954248Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-415\", \"description\": \"CWE-415 Double Free\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2025-10-01T16:09:04.724Z\"}}], \"cna\": {\"title\": \"drm/amd/display: Fix double free during GPU reset on DC streams\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.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\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerable path runs during amdgpu GPU recovery (dm_suspend/dm_resume), which an attacker reaches by submitting a hanging job through local DRM ioctls on /dev/dri/renderD* or card nodes, not via network or adjacent protocols.\\nAC:L - An attacker can reliably force a GPU hang that fails soft recovery; on affected Navi/DCN ASICs need_full_reset is always true, so recovery always suspends/resumes DCE and hits the double-free path when displays are active.\\nPR:L - Submitting command submissions via AMDGPU_CS requires only unprivileged access to a DRM render/primary node (typical video/render group or Android GPU access), not real root or init-namespace admin capabilities.\\nUI:N - The attacker triggers the hang and recovery themselves; no separate victim action such as mounting a filesystem or opening a crafted file is required.\\nS:U - The double free corrupts kernel heap state within the same OS kernel authority and does not cross a VM, IOMMU, or other security boundary.\\nC:H - Double-free of heap-allocated dc_stream_state objects creates a use-after-free that can be abused for arbitrary kernel memory disclosure once the freed object is reallocated under attacker control.\\nI:H - The same heap double-free/UAF enables classic reclaim and write primitives over kernel objects, which can be leveraged for control-flow hijacking or arbitrary kernel writes.\\nA:H - Even without full exploitation, the double free leads to kernel oops/NULL dereference and GPU reset failure, crashing or hanging the system.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6d63fcc2a334f7bd15e4e9b1db50a19335d2af4f\", \"lessThan\": \"bbfcdd6289ba6f00f0cd7d496946dce9f6c600ac\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"6d63fcc2a334f7bd15e4e9b1db50a19335d2af4f\", \"lessThan\": \"32685b32d825ca08c5dec826477332df886c4743\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c\", \"drivers/gpu/drm/amd/display/dc/core/dc_link_enc_cfg.c\", \"drivers/gpu/drm/amd/display/dc/inc/link_enc_cfg.h\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"5.17\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"5.17\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"5.17.2\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.17.*\"}, {\"status\": \"unaffected\", \"version\": \"5.18\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c\", \"drivers/gpu/drm/amd/display/dc/core/dc_link_enc_cfg.c\", \"drivers/gpu/drm/amd/display/dc/inc/link_enc_cfg.h\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/bbfcdd6289ba6f00f0cd7d496946dce9f6c600ac\"}, {\"url\": \"https://git.kernel.org/stable/c/32685b32d825ca08c5dec826477332df886c4743\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\ndrm/amd/display: Fix double free during GPU reset on DC streams\\n\\n[Why]\\nThe issue only occurs during the GPU reset code path.\\n\\nWe first backup the current state prior to commiting 0 streams\\ninternally from DM to DC. This state backup contains valid link\\nencoder assignments.\\n\\nDC will clear the link encoder assignments as part of current state\\n(but not the backup, since it was a copied before the commit) and\\nfree the extra stream reference it held.\\n\\nDC requires that the link encoder assignments remain cleared/invalid\\nprior to commiting. Since the backup still has valid assignments we\\ncall the interface post reset to clear them. This routine also\\nreleases the extra reference that the link encoder interface held -\\nresulting in a double free (and eventually a NULL pointer dereference).\\n\\n[How]\\nWe\u0027ll have to do a full DC commit anyway after GPU reset because\\nthe stream count previously went to 0.\\n\\nWe don\u0027t need to retain the assignment that we had backed up, so\\njust copy off of the now clean current state assignment after the\\nreset has occcurred with the new link_enc_cfg_copy() interface.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.17.2\", \"versionStartIncluding\": \"5.17\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.18\", \"versionStartIncluding\": \"5.17\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T08:54:23.108Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2022-49203\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T08:54:23.108Z\", \"dateReserved\": \"2025-02-26T01:49:39.291Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2025-02-26T01:55:44.214Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…