Cloudanix VulnDB

CVE-2026-45911

Medium · 5.5

CVSS

5.5

EPSS

0.2%

Published

May 27, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A flaw in some Linux USB controller software can let someone with local access crash certain devices during sleep and wake-up transitions.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Denial of service
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This is a Linux kernel denial-of-service flaw in the Cadence USB3 cdns3 dual-role controller driver. If a USB role change occurs while the system is suspended, the driver may switch to host mode during resume and then call the host resume path before the xHCI host controller device has completed probing. That invalid state can dereference a NULL pointer, causing a kernel oops and potentially a panic or reboot. The issue is hardware and configuration dependent: it is relevant to Linux systems using the cdns3 driver with USB role switching, commonly embedded or SoC-based platforms.

Why it matters to the business

Successful exploitation can crash affected Linux systems, interrupting services, edge devices, appliances, industrial systems, or embedded products that rely on the affected USB controller. The exposure is narrower than a remote network vulnerability because exploitation requires local access or the ability to influence suspend/resume and USB role switching, and the current EPSS is low with no CISA KEV listing or known mature exploit. However, for unattended or high-availability devices, even a local crash condition can create operational outages and require manual recovery.

How an attack unfolds

An attacker first needs access to a system running an affected Linux kernel on hardware that uses the cdns3 USB dual-role controller. The attacker then causes or waits for the system to enter a suspend state and triggers a USB role change while the system is suspended, such as a transition to host mode. During resume, the cdns3 driver starts the new host role, but the xHCI host controller probe can be deferred because the system is still in the resume path. The driver then incorrectly executes the host resume operation as if the xHCI device were already available. This results in a NULL pointer dereference in the USB host controller path, producing a kernel oops and potentially crashing or rebooting the system.

How to fix it

Update to a Linux kernel version from the relevant distribution, device vendor, or upstream stable branch that includes the fix for 'usb: cdns3: fix role switching during resume'. Because no specific fixed package versions were provided, track vendor advisories for kernels that include the patched cdns3 resume behavior. Where immediate patching is not possible, reduce exposure by disabling unused cdns3 USB dual-role functionality, disabling USB role switching if operationally acceptable, disabling suspend on affected devices, restricting access to power-management interfaces such as /sys/power/state, and limiting local shell or physical access to systems that can trigger role changes. For embedded products, integrate the corrected kernel patch into the BSP or firmware image and redeploy through the normal device update process.

How to confirm the fix worked

Confirm remediation by verifying the running kernel package or firmware image includes the upstream/vendor patch that skips the new role's resume operation when a role switch occurred during resume. Check kernel version and vendor changelogs rather than relying only on uname output, because vendors may backport the fix without changing to a visibly new upstream kernel version. On systems with source access, confirm the cdns3 resume logic contains the corrected role-switch handling. In a controlled test environment, perform suspend/resume cycles with USB role changes and verify that the kernel no longer logs an oops involving cdns_host_resume, cdns_resume, cdns3_controller_resume, or usb_hcd_is_primary_hcd. Production validation should focus on patch inventory, driver presence, and absence of recurring kernel crash logs after suspend/resume events.

Typical attack path

  1. Identify a Linux system using the Cadence cdns3 USB dual-role controller and an affected kernel build.
  2. Obtain local access or another capability that can influence power management and USB role-switching behavior.
  3. Cause the system to enter suspend or wait for a normal suspend event.
  4. Trigger a USB role change while the system is suspended, especially a switch into host mode.
  5. Allow or force the system to resume.
  6. The kernel cdns3 resume path dereferences a NULL pointer, causing an oops, panic, reboot, or service interruption.

How to detect it

To determine whether this issue was already triggered, review kernel logs, persistent journal entries, serial console captures, crash dumps, pstore/ramoops data, and device watchdog/reset logs for oops or panic events occurring during resume from suspend and involving the cdns3 USB driver. Useful sources include dmesg output, /var/log/kern.log, /var/log/messages, journalctl -k, kdump/vmcore analysis, pstore records under /sys/fs/pstore, and embedded device serial logs. Focus on crashes with call traces containing cdns_host_resume, cdns_resume, cdns3_controller_resume, cdns3_plat_resume, platform_pm_resume, dpm_resume, suspend_devices_and_enter, state_store, sysfs_kf_write, and usb_hcd_is_primary_hcd. Also correlate with writes to /sys/power/state, suspend/resume audit events if enabled, USB role-switch activity, unexpected watchdog reboots, or repeated device resets after power-management transitions. There are no known public threat-actor-specific indicators for this CVE; detection is primarily behavioral and crash-artifact based.

  • Unable to handle kernel NULL pointer dereference at virtual address 0000000000000208
  • Internal error: Oops: 0000000096000004
  • usb_hcd_is_primary_hcd+0x0/0x1c
  • cdns_host_resume+0x24/0x5c
  • cdns_resume+0x6c/0xbc
  • cdns3_controller_resume
  • cdns3_plat_resume
  • platform_pm_resume
  • dpm_resume
  • dpm_resume_end
  • suspend_devices_and_enter
  • pm_suspend
  • state_store
  • sysfs_kf_write
  • /sys/power/state
  • Modules linked in:
  • Hardware name: Texas Instruments J7200 EVM
  • Code: 52800003 f9407ca5 d63f00a0 17ffffe4 (f9410401)

What your security team should do

  • Prioritize patching affected embedded, edge, appliance, and high-availability Linux systems that use the cdns3 USB dual-role controller.
  • Inventory systems for cdns3 driver usage and USB dual-role hardware before broad remediation, because systems without this driver or hardware are unlikely to be affected.
  • If patching is delayed, restrict local users, physical access, and automation that can write to power-management interfaces or manipulate USB role switching.
  • Disable suspend or USB role switching on affected systems where those features are not required.
  • Monitor kernel logs and crash collectors for NULL pointer dereferences in cdns3 or USB host resume paths, especially after suspend/resume events.
  • Coordinate with device vendors or BSP maintainers for backported fixes, since affected deployments may use vendor-customized kernels rather than standard distribution kernels.

The record

In the Linux kernel, the following vulnerability has been resolved: usb: cdns3: fix role switching during resume If the role change while we are suspended, the cdns3 driver switches to the new mode during resume. However, switching to host mode in this context causes a NULL pointer dereference. The host role's start() operation registers a xhci-hcd device, but its probe is deferred while we are in the resume path. The host role's resume() operation assumes the xhci-hcd device is already probed, which is not the case, leading to the dereference. Since the start() operation of the new role is already called, the resume operation can be skipped. So skip the resume operation for the new role if a role switch occurs during resume. Once the resume sequence is complete, the xhci-hcd device can be probed in case of host mode. Unable to handle kernel NULL pointer dereference at virtual address 0000000000000208 Mem abort info: ... Data abort info: ... [0000000000000208] pgd=0000000000000000, p4d=0000000000000000 Internal error: Oops: 0000000096000004 [#1] SMP Modules linked in: CPU: 0 UID: 0 PID: 146 Comm: sh Not tainted 6.19.0-rc7-00013-g6e64f4aabfae-dirty #135 PREEMPT Hardware name: Texas Instruments J7200 EVM (DT) pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--) pc : usb_hcd_is_primary_hcd+0x0/0x1c lr : cdns_host_resume+0x24/0x5c ... Call trace: usb_hcd_is_primary_hcd+0x0/0x1c (P) cdns_resume+0x6c/0xbc cdns3_controller_resume.isra.0+0xe8/0x17c cdns3_plat_resume+0x18/0x24 platform_pm_resume+0x2c/0x68 dpm_run_callback+0x90/0x248 device_resume+0x100/0x24c dpm_resume+0x190/0x2ec dpm_resume_end+0x18/0x34 suspend_devices_and_enter+0x2b0/0xa44 pm_suspend+0x16c/0x5fc state_store+0x80/0xec kobj_attr_store+0x18/0x2c sysfs_kf_write+0x7c/0x94 kernfs_fop_write_iter+0x130/0x1dc vfs_write+0x240/0x370 ksys_write+0x70/0x108 __arm64_sys_write+0x1c/0x28 invoke_syscall+0x48/0x10c el0_svc_common.constprop.0+0x40/0xe0 do_el0_svc+0x1c/0x28 el0_svc+0x34/0x108 el0t_64_sync_handler+0xa0/0xe4 el0t_64_sync+0x198/0x19c Code: 52800003 f9407ca5 d63f00a0 17ffffe4 (f9410401) ---[ end trace 0000000000000000 ]---

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities