media: platform: mtk-mdp3: Fix SCP device refcounting
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.12.110, 6.18.51, 7.2.5
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: media: platform: mtk-mdp3: Fix SCP device refcounting mdp_probe() first tries to get the SCP handle with scp_get(). When that fails, it falls back to looking up the SCP platform device with __get_pdev_by_id() and then reads its driver data. The fallback lookup returns the platform device with a reference, just like scp_get() does. However, the fallback path currently drops that reference immediately after platform_get_drvdata(). The driver later still calls scp_put(mdp->scp) unconditionally from the probe error path and from mdp_video_device_release(), which drops the SCP device reference again. Keep the fallback reference until the existing scp_put() call, so that the fallback path follows the same ownership rules as the scp_get() path.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From db4d27e6bbbf511f9cdb33f682535a0a3cb7c403 · fixed in dce13bd9bade3ecc1acb7579397f24743850997f; From 31ba1a4d7a5d9466f6ef4910a372b8200f8aad19 · fixed in 252850653569fdb1a259937e02325cf32c8f0970; From 8f6f3aa21517ef34d50808af0c572e69580dca20 · fixed in 0259ade4c4ceaf1e184a7c1aea8071ad398f9b6f; From 8f6f3aa21517ef34d50808af0c572e69580dca20 · fixed in 55793e4665b7f15151e6f5ab51ca980e73abed5d; From 6.12.64 · fixed in 6.12.110; From 6.18.4 · fixed in 6.18.51
- Linux Linux
6.19
- KernelLinux
fixed in 6.12.110; From 6.13.0 · fixed in 6.18.51; From 6.19.0 · fixed in 7.2.5