CVE-2026-89819 (GCVE-0-2026-89819)

Vulnerability from cvelistv5 – Published: 2026-09-16 10:30 – Updated: 2026-09-16 14:39
VLAI
Title
drm/amd/display: validate plane degamma LUT size for private color prop
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/amd/display: validate plane degamma LUT size for private color prop Unlike the CRTC degamma path, which is guarded by amdgpu_dm_verify_lut_sizes(), the per-plane degamma LUT size was never validated before use. __set_dm_plane_degamma() passed the user-supplied size straight into __is_lut_linear() and, for a non-linear LUT, into __set_input_tf() -> __drm_lut_to_dc_gamma(), the latter always iterating MAX_COLOR_LUT_ENTRIES entries regardless of the actual LUT size. A malformed AMD_PLANE_DEGAMMA_LUT blob (e.g. a single entry) could thus trigger a divide-by-zero in __is_lut_linear() or an out-of-bounds read in __drm_lut_to_dc_gamma(). Reject any plane degamma LUT whose size does not match MAX_COLOR_LUT_ENTRIES, mirroring the invariant the code already asserts a few lines below (and which the CRTC path enforces). The AMD_PLANE_DEGAMMA_LUT property is only exposed on builds with AMD_PRIVATE_COLOR defined.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 980f8710075acaeb226a94cde6dda8ffad30123c , < f6f04d8ae5725bcc893bdc62e3467efd97255c5b (git)
Affected: 980f8710075acaeb226a94cde6dda8ffad30123c , < 0b2615b8b54f58bbdf986dffb38cbc35214a5cc5 (git)
Affected: 980f8710075acaeb226a94cde6dda8ffad30123c , < b10cc09b329245c6d95f8fa3e7f068575e3e0e9f (git)
Affected: 980f8710075acaeb226a94cde6dda8ffad30123c , < e4c3ab59021e7c146a84b6671f0d530972bd58b4 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.8
Unaffected: 0 , < 6.8 (semver)
Unaffected: 6.12.110 , ≤ 6.12.* (semver)
Unaffected: 6.18.51 , ≤ 6.18.* (semver)
Unaffected: 7.2.5 , ≤ 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_color.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "f6f04d8ae5725bcc893bdc62e3467efd97255c5b",
              "status": "affected",
              "version": "980f8710075acaeb226a94cde6dda8ffad30123c",
              "versionType": "git"
            },
            {
              "lessThan": "0b2615b8b54f58bbdf986dffb38cbc35214a5cc5",
              "status": "affected",
              "version": "980f8710075acaeb226a94cde6dda8ffad30123c",
              "versionType": "git"
            },
            {
              "lessThan": "b10cc09b329245c6d95f8fa3e7f068575e3e0e9f",
              "status": "affected",
              "version": "980f8710075acaeb226a94cde6dda8ffad30123c",
              "versionType": "git"
            },
            {
              "lessThan": "e4c3ab59021e7c146a84b6671f0d530972bd58b4",
              "status": "affected",
              "version": "980f8710075acaeb226a94cde6dda8ffad30123c",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.8"
            },
            {
              "lessThan": "6.8",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.51",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.5",
              "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": "6.12.110",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.51",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.5",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amd/display: validate plane degamma LUT size for private color prop\n\nUnlike the CRTC degamma path, which is guarded by\namdgpu_dm_verify_lut_sizes(), the per-plane degamma LUT size was never\nvalidated before use. __set_dm_plane_degamma() passed the user-supplied\nsize straight into __is_lut_linear() and, for a non-linear LUT, into\n__set_input_tf() -\u003e __drm_lut_to_dc_gamma(), the latter always iterating\nMAX_COLOR_LUT_ENTRIES entries regardless of the actual LUT size.\n\nA malformed AMD_PLANE_DEGAMMA_LUT blob (e.g. a single entry) could thus\ntrigger a divide-by-zero in __is_lut_linear() or an out-of-bounds read in\n__drm_lut_to_dc_gamma(). Reject any plane degamma LUT whose size does not\nmatch MAX_COLOR_LUT_ENTRIES, mirroring the invariant the code already\nasserts a few lines below (and which the CRTC path enforces).\n\nThe AMD_PLANE_DEGAMMA_LUT property is only exposed on builds with\nAMD_PRIVATE_COLOR defined."
        }
      ],
      "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 reached only through local DRM ioctls (DRM_IOCTL_MODE_CREATEPROPBLOB then DRM_IOCTL_MODE_ATOMIC or MODE_OBJ_SETPROPERTY) on /dev/dri/cardN when setting AMD_PLANE_DEGAMMA_LUT, a private plane property on AMDGPU display; no network or remote-peer path exists into amdgpu_dm color management.\nAC:L - The attacker fully controls the LUT blob size and contents and can deterministically trigger a divide-by-zero with a one-entry blob or a large heap over-read with a short non-linear LUT; no race, memory-layout luck, or victim state is required.\nPR:L - DRM_IOCTL_MODE_ATOMIC requires DRM master, which is the normal state of the logged-in graphical-session user (compositor, gamescope, kiosk, Steam Deck, Android) or the first opener of an unclaimed card; no CAP_SYS_ADMIN or real root is needed.\nUI:N - The attacker creates the undersized blob and issues the atomic commit from their own process; no other user must open a file, plug in a display, or take any action.\nS:U - The divide-by-zero and out-of-bounds read occur in kernel context on the same host inside the amdgpu display driver; impact stays within the kernel security authority with no VM, IOMMU, or sandbox boundary crossed.\nC:H - __drm_lut_to_dc_gamma() always walks MAX_COLOR_LUT_ENTRIES (4096) drm_color_lut records regardless of blob length, over-reading about 32KB of adjacent kernel heap from a short LUT blob and copying those values into dc_gamma and the display pipeline.\nI:H - Kernel heap contents from the over-read are stored into dc_gamma entries and applied by apply_lut_1d() into the plane transfer function that is programmed into DPP degamma hardware, corrupting driver and GPU color-management state with unvalidated memory.\nA:H - A one-entry LUT causes a divide-error (#DE) panic in __is_lut_linear(); a short non-linear LUT makes __drm_lut_to_dc_gamma() walk tens of kilobytes past the blob into potentially unmapped heap, oopsing the kernel on the atomic check/commit path."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-16T14:39:00.997Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/f6f04d8ae5725bcc893bdc62e3467efd97255c5b"
        },
        {
          "url": "https://git.kernel.org/stable/c/0b2615b8b54f58bbdf986dffb38cbc35214a5cc5"
        },
        {
          "url": "https://git.kernel.org/stable/c/b10cc09b329245c6d95f8fa3e7f068575e3e0e9f"
        },
        {
          "url": "https://git.kernel.org/stable/c/e4c3ab59021e7c146a84b6671f0d530972bd58b4"
        }
      ],
      "title": "drm/amd/display: validate plane degamma LUT size for private color prop",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-89819",
    "datePublished": "2026-09-16T10:30:51.898Z",
    "dateReserved": "2026-09-11T19:38:34.768Z",
    "dateUpdated": "2026-09-16T14:39:00.997Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-89819",
      "date": "2026-09-25",
      "epss": "0.00175",
      "percentile": "0.06196"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "f6f04d8ae5725bcc893bdc62e3467efd97255c5b",
                    "status": "affected",
                    "version": "980f8710075acaeb226a94cde6dda8ffad30123c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "0b2615b8b54f58bbdf986dffb38cbc35214a5cc5",
                    "status": "affected",
                    "version": "980f8710075acaeb226a94cde6dda8ffad30123c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "b10cc09b329245c6d95f8fa3e7f068575e3e0e9f",
                    "status": "affected",
                    "version": "980f8710075acaeb226a94cde6dda8ffad30123c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e4c3ab59021e7c146a84b6671f0d530972bd58b4",
                    "status": "affected",
                    "version": "980f8710075acaeb226a94cde6dda8ffad30123c",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.8"
                  },
                  {
                    "lessThan": "6.8",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.110",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.51",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.5",
                    "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: validate plane degamma LUT size for private color prop\n\nUnlike the CRTC degamma path, which is guarded by\namdgpu_dm_verify_lut_sizes(), the per-plane degamma LUT size was never\nvalidated before use. __set_dm_plane_degamma() passed the user-supplied\nsize straight into __is_lut_linear() and, for a non-linear LUT, into\n__set_input_tf() -\u003e __drm_lut_to_dc_gamma(), the latter always iterating\nMAX_COLOR_LUT_ENTRIES entries regardless of the actual LUT size.\n\nA malformed AMD_PLANE_DEGAMMA_LUT blob (e.g. a single entry) could thus\ntrigger a divide-by-zero in __is_lut_linear() or an out-of-bounds read in\n__drm_lut_to_dc_gamma(). Reject any plane degamma LUT whose size does not\nmatch MAX_COLOR_LUT_ENTRIES, mirroring the invariant the code already\nasserts a few lines below (and which the CRTC path enforces).\n\nThe AMD_PLANE_DEGAMMA_LUT property is only exposed on builds with\nAMD_PRIVATE_COLOR defined."
          }
        ],
        "id": "CVE-2026-89819",
        "lastModified": "2026-09-16T15:18:11.173",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-16T11:16:47.253",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/0b2615b8b54f58bbdf986dffb38cbc35214a5cc5"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b10cc09b329245c6d95f8fa3e7f068575e3e0e9f"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e4c3ab59021e7c146a84b6671f0d530972bd58b4"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/f6f04d8ae5725bcc893bdc62e3467efd97255c5b"
          }
        ],
        "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…