{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2023-53851",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-12-09T01:27:17.827Z",
        "datePublished": "2025-12-09T01:30:16.081Z",
        "dateUpdated": "2026-08-05T09:16:24.407Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T09:16:24.407Z"
            },
            "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->dev), 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's attempt to read the EDID information causes a use after free on\nDP resources.\n\nIt's tempting to move the devres to the DP controller's 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": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 8.4,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:L - The vulnerable code is only entered through local device-driver bind/unbind context — deferred probe of the msm DRM aggregate device, `rmmod msm`, or a sysfs unbind — with no network, adjacent-network, or hot-pluggable physical input reaching it (the aux-bus path is gated on `dp->is_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 — 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's post-teardown aux transfer writes into the freed object — `mutex_lock()`, `aux->cmd_busy`, `reinit_completion()`, and `complete()` on a freed waitqueue — and `of_dp_aux_depopulate_bus()` walks a freed device's 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."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/gpu/drm/msm/dp/dp_display.c"
                    ],
                    "versions": [
                        {
                            "version": "2b57f726611e294dc4297dd48eb8c98ef1938e82",
                            "lessThan": "e09ed06938807cb113cddd0708ed74bd8cdaff33",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "2b57f726611e294dc4297dd48eb8c98ef1938e82",
                            "lessThan": "2fde37445807e6e6d7981402d0bf1be0e5d81291",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "2b57f726611e294dc4297dd48eb8c98ef1938e82",
                            "lessThan": "a7bfb2ad2184a1fba78be35209b6019aa8cc8d4d",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "8768663188e4169333f66583e4d2432e65c421df",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "6.0.7",
                            "lessThan": "6.1",
                            "status": "affected",
                            "versionType": "semver"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/gpu/drm/msm/dp/dp_display.c"
                    ],
                    "versions": [
                        {
                            "version": "6.1",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "6.1",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.3.13",
                            "lessThanOrEqual": "6.3.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.4.4",
                            "lessThanOrEqual": "6.4.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.5",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.1",
                                    "versionEndExcluding": "6.3.13"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.1",
                                    "versionEndExcluding": "6.4.4"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.1",
                                    "versionEndExcluding": "6.5"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.0.7"
                                }
                            ]
                        }
                    ]
                }
            ],
            "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"
            }
        }
    }
}