CVE-2026-89590 Overview
CVE-2026-89590 is a Linux kernel vulnerability in the accel/rocket driver, which supports Neural Processing Unit (NPU) acceleration. The flaw resides in the rocket_job_run() function, where error path handling contains three distinct defects. After acquiring an extra fence reference via dma_fence_get() for job->done_fence, the failure paths leak both the DMA fence reference and the runtime power management (PM) reference. The code also returns an unsignaled fence to the Direct Rendering Manager (DRM) scheduler, triggering a kernel warning when the scheduler drops its reference.
Critical Impact
Repeated invocation of the affected code path can exhaust DMA fence references and prevent the NPU from suspending, degrading system reliability and power management.
Affected Products
- Linux kernel versions containing the accel/rocket NPU driver prior to the fix
- Systems using Rockchip NPU hardware exposed through the accel/rocket DRM accelerator subsystem
- Distributions shipping mainline kernels with the affected rocket_job_run() implementation
Discovery Timeline
- 2026-09-11 - CVE-2026-89590 published to the National Vulnerability Database (NVD)
- 2026-09-11 - Last updated in NVD database
Technical Details for CVE-2026-89590
Vulnerability Analysis
The defect lives in rocket_job_run() inside the Linux kernel's accel/rocket NPU driver. The function takes an additional reference on job->done_fence through dma_fence_get() before performing runtime PM and hardware setup operations. When any subsequent step fails, three separate resource management errors occur.
First, the fence reference obtained by dma_fence_get() is never released on the error path, producing a reference leak on every failed job submission. Second, pm_runtime_get_sync() increments the device usage counter even when the call fails, but the error path omits the corresponding decrement. That leak keeps the NPU pinned in an active power state and blocks runtime suspend. Third, a valid but unsignaled fence is returned to the DRM scheduler. When the scheduler later drops its reference, the kernel emits WARN("Fence ... released with pending signals!").
Root Cause
The root cause is incorrect error-path bookkeeping [Memory Leak]. The original code lacked consolidated goto labels to unwind the fence reference, roll back the runtime PM counter, and produce a proper error return value. Using pm_runtime_get_sync() also placed the burden of balancing the usage counter on the caller, which the driver did not do.
Attack Vector
Triggering the flaw requires local access to submit jobs to the accel/rocket device node. A user with permission to submit NPU jobs can repeatedly induce failure conditions along the error path. Each failure leaks a DMA fence reference and a runtime PM reference, and each occurrence generates a kernel warning. The cumulative effect is resource exhaustion and inhibited NPU power management rather than direct memory corruption or privilege escalation.
See the upstream fixes for technical details: Kernel Git Commit 7d6fa29, Kernel Git Commit 9ad88215, and Kernel Git Commit 9b2deda.
Detection Methods for CVE-2026-89590
Indicators of Compromise
- Kernel log entries containing WARN("Fence ... released with pending signals!") originating from the DRM scheduler
- Increasing DMA fence reference counts tied to the accel/rocket driver visible through debugfs
- Devices exposing the Rockchip NPU that never enter runtime suspend despite idle workloads
Detection Strategies
- Audit dmesg and journal entries for repeated fence-related warnings following NPU job submissions
- Monitor /sys/kernel/debug/dri/*/ and runtime PM sysfs nodes for anomalous reference counts on the accel/rocket device
- Track kernel version and patch level across the fleet to identify hosts still running vulnerable accel/rocket code
Monitoring Recommendations
- Forward kernel logs to a centralized logging platform and alert on DRM scheduler fence warnings
- Baseline NPU runtime power states and alert when devices fail to suspend during expected idle periods
- Include the affected kernel commit hashes in vulnerability management scans to confirm patch presence
How to Mitigate CVE-2026-89590
Immediate Actions Required
- Apply the upstream kernel patches referenced in the NVD entry, replacing pm_runtime_get_sync() with pm_runtime_resume_and_get() in rocket_job_run()
- Update to a stable kernel release that incorporates commits 7d6fa29, 9ad88215, and 9b2deda
- Restrict access to the accel/rocket device node to trusted users where patching cannot be applied immediately
Patch Information
The fix consolidates error handling in rocket_job_run() using goto labels, releases both fence references on failure, and returns ERR_PTR(ret) instead of an unsignaled fence. Switching to pm_runtime_resume_and_get() ensures the runtime PM usage counter is auto-balanced when the call fails. Refer to Kernel Git Commit 7d6fa29, Kernel Git Commit 9ad88215, and Kernel Git Commit 9b2deda for the exact source changes.
Workarounds
- Disable or unload the accel/rocket driver on systems that do not require NPU acceleration
- Enforce Linux capability and permission controls on the DRM accelerator device node to limit local job submission
- Reboot affected systems periodically to reclaim leaked fence and runtime PM references until a patched kernel is deployed
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

