{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-89885",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2026-09-11T19:38:34.773Z",
        "datePublished": "2026-09-16T10:31:49.746Z",
        "dateUpdated": "2026-10-19T08:54:18.396Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-10-19T08:54:18.396Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: platform: mtk-mdp3: Fix SCP device refcounting\n\nmdp_probe() first tries to get the SCP handle with scp_get(). When that\nfails, it falls back to looking up the SCP platform device with\n__get_pdev_by_id() and then reads its driver data.\n\nThe fallback lookup returns the platform device with a reference, just\nlike scp_get() does. However, the fallback path currently drops that\nreference immediately after platform_get_drvdata(). The driver later\nstill calls scp_put(mdp->scp) unconditionally from the probe error path\nand from mdp_video_device_release(), which drops the SCP device\nreference again.\n\nKeep the fallback reference until the existing scp_put() call, so that\nthe fallback path follows the same ownership rules as the scp_get()\npath."
                }
            ],
            "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 extra put_device is in mdp_probe()/mdp_video_device_release of the MediaTek MDP3 platform driver, reached only via local driver-model bind on MT8183/MT8195 (boot, deferred probe, module load, or sysfs rebind). No network, Bluetooth/Wi-Fi, or USB path reaches this SCP refcounting.\nAC:L - On MT8183 the MDP RDMA node has no mediatek,scp phandle, so scp_get() fails and the compatible fallback is the production path. That path drops the of_find_device_by_node() ref then later scp_put() extra-puts; cmdq mailbox EPROBE_DEFER after the fallback makes this deterministic with no race.\nPR:N - mdp_probe() runs in driver-core context with no capable() or credential check. On MediaTek Chromebooks, phones, and embedded boards, MDP3 commonly deferred-probes at boot after the SCP fallback, so the extra put fires without a user account.\nUI:N - Platform probe and deferred-probe retries run unattended at boot or module bind on affected hardware. Opening /dev/video, mounting a filesystem, or plugging a device is not required.\nS:U - The extra put_device() use-after-free is of the host SCP platform_device inside the same kernel security authority. It does not cross a VM, IOMMU/DMA, or sandbox boundary.\nC:H - scp_put() extra-puts the SCP platform_device, which can run device_release and free the still-bound struct device. A use-after-free of that object enables reclaim and kernel-memory disclosure.\nI:H - The same device UAF is heap corruption of struct platform_device/mtk_scp still used by the SCP driver and other scp_get() holders, enabling heap spray, arbitrary write, and control-flow hijack.\nA:H - Freeing the SCP device while it remains registered, or later dereferencing the dangling scp pointer from MDP3/vcodec, causes a kernel oops or panic."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c"
                    ],
                    "versions": [
                        {
                            "version": "db4d27e6bbbf511f9cdb33f682535a0a3cb7c403",
                            "lessThan": "dce13bd9bade3ecc1acb7579397f24743850997f",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "31ba1a4d7a5d9466f6ef4910a372b8200f8aad19",
                            "lessThan": "252850653569fdb1a259937e02325cf32c8f0970",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "8f6f3aa21517ef34d50808af0c572e69580dca20",
                            "lessThan": "0259ade4c4ceaf1e184a7c1aea8071ad398f9b6f",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "8f6f3aa21517ef34d50808af0c572e69580dca20",
                            "lessThan": "55793e4665b7f15151e6f5ab51ca980e73abed5d",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "6.12.64",
                            "lessThan": "6.12.110",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.18.4",
                            "lessThan": "6.18.51",
                            "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/media/platform/mediatek/mdp3/mtk-mdp3-core.c"
                    ],
                    "versions": [
                        {
                            "version": "6.19",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "6.19",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.12.110",
                            "lessThanOrEqual": "6.12.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.18.51",
                            "lessThanOrEqual": "6.18.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.2.5",
                            "lessThanOrEqual": "7.2.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.3",
                            "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.12.64",
                                    "versionEndExcluding": "6.12.110"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.18.4",
                                    "versionEndExcluding": "6.18.51"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.19",
                                    "versionEndExcluding": "7.2.5"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "6.19",
                                    "versionEndExcluding": "7.3"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/dce13bd9bade3ecc1acb7579397f24743850997f"
                },
                {
                    "url": "https://git.kernel.org/stable/c/252850653569fdb1a259937e02325cf32c8f0970"
                },
                {
                    "url": "https://git.kernel.org/stable/c/0259ade4c4ceaf1e184a7c1aea8071ad398f9b6f"
                },
                {
                    "url": "https://git.kernel.org/stable/c/55793e4665b7f15151e6f5ab51ca980e73abed5d"
                }
            ],
            "title": "media: platform: mtk-mdp3: Fix SCP device refcounting",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}