CVE-2023-53851 (GCVE-0-2023-53851)
Vulnerability from cvelistv5
Published
2025-12-09 01:30
Modified
2026-08-05 09:16
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/msm/dp: Drop aux devices together with DP controller Using devres to depopulate the aux bus made sure that upon a probe deferral the EDP panel device would be destroyed and recreated upon next attempt. But the struct device which the devres is tied to is the DPUs (drm_dev->dev), which may be happen after the DP controller is torn down. Indications of this can be seen in the commonly seen EDID-hexdump full of zeros in the log, or the occasional/rare KASAN fault where the panel's attempt to read the EDID information causes a use after free on DP resources. It's tempting to move the devres to the DP controller's struct device, but the resources used by the device(s) on the aux bus are explicitly torn down in the error path. The KASAN-reported use-after-free also remains, as the DP aux "module" explicitly frees its devres-allocated memory in this code path. As such, explicitly depopulate the aux bus in the error path, and in the component unbind path, to avoid these issues. Patchwork: https://patchwork.freedesktop.org/patch/542163/
Impacted products
Vendor Product Version
Linux Linux Version: 2b57f726611e294dc4297dd48eb8c98ef1938e82
Version: 2b57f726611e294dc4297dd48eb8c98ef1938e82
Version: 2b57f726611e294dc4297dd48eb8c98ef1938e82
Version: 8768663188e4169333f66583e4d2432e65c421df
Version: 6.0.7   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/msm/dp/dp_display.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "e09ed06938807cb113cddd0708ed74bd8cdaff33",
              "status": "affected",
              "version": "2b57f726611e294dc4297dd48eb8c98ef1938e82",
              "versionType": "git"
            },
            {
              "lessThan": "2fde37445807e6e6d7981402d0bf1be0e5d81291",
              "status": "affected",
              "version": "2b57f726611e294dc4297dd48eb8c98ef1938e82",
              "versionType": "git"
            },
            {
              "lessThan": "a7bfb2ad2184a1fba78be35209b6019aa8cc8d4d",
              "status": "affected",
              "version": "2b57f726611e294dc4297dd48eb8c98ef1938e82",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8768663188e4169333f66583e4d2432e65c421df",
              "versionType": "git"
            },
            {
              "lessThan": "6.1",
              "status": "affected",
              "version": "6.0.7",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/msm/dp/dp_display.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.1"
            },
            {
              "lessThan": "6.1",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.3.*",
              "status": "unaffected",
              "version": "6.3.13",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.4.*",
              "status": "unaffected",
              "version": "6.4.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.5",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.3.13",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.4.4",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.5",
                  "versionStartIncluding": "6.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "6.0.7",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/msm/dp: Drop aux devices together with DP controller\n\nUsing devres to depopulate the aux bus made sure that upon a probe\ndeferral the EDP panel device would be destroyed and recreated upon next\nattempt.\n\nBut the struct device which the devres is tied to is the DPUs\n(drm_dev-\u003edev), which may be happen after the DP controller is torn\ndown.\n\nIndications of this can be seen in the commonly seen EDID-hexdump full\nof zeros in the log, or the occasional/rare KASAN fault where the\npanel\u0027s attempt to read the EDID information causes a use after free on\nDP resources.\n\nIt\u0027s tempting to move the devres to the DP controller\u0027s struct device,\nbut the resources used by the device(s) on the aux bus are explicitly\ntorn down in the error path. The KASAN-reported use-after-free also\nremains, as the DP aux \"module\" explicitly frees its devres-allocated\nmemory in this code path.\n\nAs such, explicitly depopulate the aux bus in the error path, and in the\ncomponent unbind path, to avoid these issues.\n\nPatchwork: https://patchwork.freedesktop.org/patch/542163/"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.4,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable code is only entered through local device-driver bind/unbind context \u2014 deferred probe of the msm DRM aggregate device, `rmmod msm`, or a sysfs unbind \u2014 with no network, adjacent-network, or hot-pluggable physical input reaching it (the aux-bus path is gated on `dp-\u003eis_edp`, an internal panel).\nAC:L - The error path is deterministic: whenever the eDP panel probes asynchronously, `devm_dp_parser_find_next_bridge()` returns `-EPROBE_DEFER` and the code tears down the PHY/host while leaving the panel device populated, which the author notes is \"commonly seen\" in the field, and the teardown can be re-driven repeatedly via bind/unbind cycles.\nPR:N - The dangling-panel condition arises on its own inside `deferred_probe_work_func` during boot, before any user logs in or any credential is checked, so no privileges of any kind are needed for the freed DP resources to be used; root-initiated unbind/module unload is merely a higher-privilege way to reach the same code.\nUI:N - Deferred probe and component unbind run autonomously in kernel worker/driver-core context; no victim needs to open a device node, mount anything, or take any action.\nS:U - The freed object, the corrupting writes, and the resulting fault are all kernel state within a single security authority \u2014 no VM, IOMMU/DMA, or sandbox boundary is crossed.\nC:H - This is a use-after-free of the devm-allocated `struct msm_dp_aux_private` and the DP resources behind it; the freed slab object is read back and its contents propagate into the EDID/DPCD data path, and an attacker who reclaims the allocation controls what is read, giving a kernel-memory disclosure primitive.\nI:H - The panel\u0027s post-teardown aux transfer writes into the freed object \u2014 `mutex_lock()`, `aux-\u003ecmd_busy`, `reinit_completion()`, and `complete()` on a freed waitqueue \u2014 and `of_dp_aux_depopulate_bus()` walks a freed device\u0027s child list, yielding heap-spray-controllable writes and list corruption that are exploitable for control-flow hijack.\nA:H - The author reports KASAN-confirmed use-after-free faults on this path; a UAF in DRM teardown oopses the kernel (panicking under `panic_on_oops`/`panic_on_warn`) and leaves the display controller half-destroyed, so the device fails to come up."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T09:16:24.407Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/e09ed06938807cb113cddd0708ed74bd8cdaff33"
        },
        {
          "url": "https://git.kernel.org/stable/c/2fde37445807e6e6d7981402d0bf1be0e5d81291"
        },
        {
          "url": "https://git.kernel.org/stable/c/a7bfb2ad2184a1fba78be35209b6019aa8cc8d4d"
        }
      ],
      "title": "drm/msm/dp: Drop aux devices together with DP controller",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2023-53851",
    "datePublished": "2025-12-09T01:30:16.081Z",
    "dateReserved": "2025-12-09T01:27:17.827Z",
    "dateUpdated": "2026-08-05T09:16:24.407Z",
    "state": "PUBLISHED"
  },
  "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…