Cloudanix VulnDB

CVE-2026-93194

None

CVSS

—

EPSS

0.2%

Published

Sep 17, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A cleanup mistake in the display driver for certain Rockchip chips can leave memory in a bad state, potentially crashing the system or letting an attacker who already has access run code.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Privilege Gain
Component
OS kernel
Class
Use After Free
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

Failure to call unbind cleanup in dw_dp_bind error paths and component unbind leaves DisplayPort AUX channel and other core resources registered, resulting in use-after-free when device teardown or dependent device operations later access the freed structures.

Why it matters to the business

Systems using Rockchip DRM DisplayPort hardware may experience kernel crashes, memory corruption, or local privilege escalation during driver load/unload or hotplug events, increasing downtime and potential compromise on affected Linux devices.

How an attack unfolds

An attacker with local access triggers repeated module load/unload or device probe sequences that exercise the bind error path or component unbind without proper resource release, allowing subsequent kernel operations to dereference freed memory for denial of service or code execution.

How to fix it

Update to a Linux kernel containing the referenced commit that invokes dw_dp_unbind in the component unbind callback and bind error path; rebuild and deploy the updated kernel image on all affected Rockchip DRM systems.

How to confirm the fix worked

Confirm the presence of dw_dp_unbind calls inside dw_dp_rockchip_unbind and the bind error handler in the rockchipdrm driver source; test module insert/remove cycles under KASAN or similar memory debuggers to verify absence of use-after-free reports.

Typical attack path

  1. Obtain local shell or userland execution on target system
  2. Trigger rockchipdrm or dw_dp module probe or unbind via hardware events or explicit driver reload
  3. Force bind failure or component teardown that skips dw_dp_unbind
  4. Perform follow-on kernel operations that touch the stale AUX channel pointers
  5. Achieve slab use-after-free for crash or exploitation

How to detect it

Review kernel logs for KASAN reports citing slab-use-after-free in device_is_dependent during modprobe or rockchip_drm_platform_probe; inspect dmesg for call traces referencing dw_dp_bind and device_link_add on systems with Radxa ROCK 5B or equivalent DT hardware.

What your security team should do

  • Prioritize kernel updates on all Rockchip-based devices within standard patch windows given low EPSS and no KEV listing
  • Restrict local module loading and driver attach privileges where feasible
  • Monitor kernel logs for KASAN or slab-use-after-free reports involving device_is_dependent or dw_dp_bind
  • Include the fix in next maintenance kernel build and test on representative ROCK 5B or similar hardware

The record

In the Linux kernel, the following vulnerability has been resolved: drm/rockchip: dw_dp: Release core resources Core resources such as the DisplayPort AUX channel get initialized and registered during dw_dp_bind(), but are never unregistered, which may lead to memory leaks and/or use-after-free: [ 224.661371] BUG: KASAN: slab-use-after-free in device_is_dependent+0xe0/0x2b0 [ 224.662015] Read of size 8 at addr ffff00011aee8550 by task modprobe/658 [ 224.662612] [ 224.662752] CPU: 7 UID: 0 PID: 658 Comm: modprobe Not tainted 7.0.0-rc2-next-20260305 #14 PREEMPT [ 224.662759] Hardware name: Radxa ROCK 5B (DT) [ 224.662762] Call trace: [ 224.662764] show_stack+0x20/0x38 (C) [ 224.662772] dump_stack_lvl+0x6c/0x98 [ 224.662777] print_report+0x160/0x4b8 [ 224.662783] kasan_report+0xb4/0xe0 [ 224.662790] __asan_report_load8_noabort+0x20/0x30 [ 224.662796] device_is_dependent+0xe0/0x2b0 [ 224.662802] device_is_dependent+0x108/0x2b0 [ 224.662808] device_link_add+0x1f8/0x10b0 [ 224.662813] devm_of_phy_get_by_index+0x120/0x200 [ 224.662819] dw_dp_bind+0x34c/0xb10 [dw_dp] [ 224.662830] dw_dp_rockchip_bind+0x194/0x250 [rockchipdrm] [ 224.662864] component_bind_all+0x3a8/0x720 [ 224.662869] rockchip_drm_bind+0x120/0x390 [rockchipdrm] [ 224.662899] try_to_bring_up_aggregate_device+0x76c/0x838 [ 224.662904] component_master_add_with_match+0x1f4/0x230 [ 224.662909] rockchip_drm_platform_probe+0x420/0x538 [rockchipdrm] [ 224.662939] platform_probe+0xe8/0x168 [ 224.662945] really_probe+0x340/0x828 [ 224.662950] __driver_probe_device+0x2e0/0x350 [ 224.662954] driver_probe_device+0x80/0x140 [ 224.662959] __driver_attach+0x398/0x460 [ 224.662964] bus_for_each_dev+0xe0/0x198 [ 224.662968] driver_attach+0x50/0x68 [ 224.662972] bus_add_driver+0x2a0/0x4c0 [ 224.662977] driver_register+0x294/0x360 [ 224.662982] __platform_driver_register+0x7c/0x98 [ 224.662987] rockchip_drm_init+0xc4/0xff8 [rockchipdrm] Since a previous commit exported dw_dp_unbind() function in DW DP core library to take care of the necessary cleanup, use this in the component's unbind() callback, as well as in its bind() error path.

Affected packages

Ecosystem Package Introduced Fixed