CVE-2026-89512 Overview
CVE-2026-89512 is a Linux kernel vulnerability in the remoteproc subsystem affecting the System Control Processor (SCP) driver. The flaw is a device reference leak that occurs when the driver attempts to look up its driver data before the driver has been bound. The reference taken to the SCP device is not dropped on the failed lookup path, leading to a resource leak in kernel object reference counting.
Critical Impact
Repeated triggering of the failed lookup path leaks device references, which can degrade system stability over time and prevent proper cleanup of driver resources.
Affected Products
- Linux kernel remoteproc subsystem
- MediaTek SCP (System Control Processor) driver
- Kernel branches receiving stable backports listed in the referenced commits
Discovery Timeline
- 2026-09-11 - CVE-2026-89512 published to NVD
- 2026-09-14 - Last updated in NVD database
Technical Details for CVE-2026-89512
Vulnerability Analysis
The vulnerability resides in the remoteproc SCP driver code path that resolves an SCP device to its driver data. The lookup takes a reference on the underlying struct device before checking whether the driver has been bound. When the driver is not yet bound, the function returns an error without releasing the previously acquired reference. Each failed lookup therefore increments the device kobject reference count permanently.
As the upstream commit message notes, holding a reference to a device does not prevent its driver data from disappearing. The pre-existing code pattern conflated device lifetime with driver-data lifetime, producing both a reference leak and a latent use-after-free style hazard on the driver data pointer.
Root Cause
The root cause is missing cleanup on an error path — a Memory Leak class defect in kernel reference counting. The lookup helper called get_device() (or an equivalent that increments the kref) but returned early on the not-bound condition without a matching put_device(). This is a classic acquire-without-release bug in a rarely exercised branch.
Attack Vector
Exploitation requires the ability to repeatedly trigger the SCP lookup path from a caller that runs before driver binding completes. This is generally a local, low-privilege scenario tied to platform initialization ordering on affected MediaTek SoCs. The primary observable impact is kernel resource exhaustion and abnormal device teardown behavior rather than direct code execution.
No code example is provided because verified proof-of-concept code is not publicly available. See the upstream fixes listed in the technical references for the exact patched functions.
Detection Methods for CVE-2026-89512
Indicators of Compromise
- Kernel messages related to remoteproc or mtk_scp device binding failures repeating over time
- Growing refcount values on SCP struct device objects visible under /sys/kernel/debug/
- Failure to unbind or unload the SCP remoteproc driver after runtime
Detection Strategies
- Audit kernel version and configuration on MediaTek-based Linux systems that enable CONFIG_MTK_SCP or the corresponding remoteproc driver.
- Compare running kernel commit hashes against the fix commits (22f9efb3, 440bcb09, 554689ff, 6ca338cf, c7e32814, d6ef9060, f1c9512a, f794c930) listed in the Linux kernel stable tree.
- Monitor dmesg for repeated remoteproc probe or lookup errors during device initialization.
Monitoring Recommendations
- Track kernel object reference counts on long-running embedded and edge devices using MediaTek SoCs.
- Alert on unexpected growth of remoteproc device references during operational workloads.
- Include the affected drivers in build inventory scans so patched versions are verified after rollouts.
How to Mitigate CVE-2026-89512
Immediate Actions Required
- Identify Linux systems running the MediaTek SCP remoteproc driver and enumerate their kernel versions.
- Schedule updates to a kernel release that includes one of the referenced stable fix commits.
- On systems that cannot be patched immediately, limit workloads that repeatedly probe the SCP device before driver binding.
Patch Information
The fix ensures the SCP device reference is dropped when driver-data lookup fails prior to driver binding. Upstream backports are available across multiple stable branches. Reference commits: 22f9efb3, 440bcb09, 554689ff, 6ca338cf, c7e32814, d6ef9060, f1c9512a, and f794c930.
Workarounds
- Disable the SCP remoteproc driver via kernel config or module blacklist where the SCP functionality is not required.
- Restrict local access on affected devices to reduce the surface for repeated lookup attempts before binding completes.
- Reboot systems that exhibit accumulated reference leaks until a patched kernel is deployed.
# Verify running kernel and check for the mtk_scp module
uname -r
lsmod | grep -E 'mtk_scp|remoteproc'
# Optionally blacklist the module where SCP is not needed
echo 'blacklist mtk_scp' | sudo tee /etc/modprobe.d/blacklist-mtk-scp.conf
sudo update-initramfs -u
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.
