CVE-2026-64583 fixes a teardown race in Linux’s Broadcom BDC USB device-controller driver that can leave an interrupt handler and delayed work item running after the driver has begun freeing their backing memory. For systems that actually use the bdc driver, the result can be a kernel NULL-pointer dereference or use-after-free during device removal, driver unload, or a failed probe—conditions that can crash the machine and, depending on exploitation of the memory-safety flaw, carry broader local-security consequences.

The Linux kernel CVE record lists fixed versions 6.6.148, 6.12.101, 6.18.42, 7.1.6, and 7.2-rc5, with kernel.org assigning a CVSS 3.1 score of 7.8 High. NVD published the record on August 6, 2026 and updated it on August 8, but has not supplied its own CVSS assessment. That distinction matters for patch dashboards: the only current severity vector is the Linux CNA’s rating, which requires local privileges and does not describe a remotely reachable USB-host attack.

For Windows users, this is not a Windows kernel vulnerability. It is also not a defect in the ordinary USB host stack used when a PC connects keyboards, storage drives, phones, or webcams. Windows 11, Windows Server, and standard Windows hardware installations do not ship or load the Linux

bdc

driver. The relevant Windows-adjacent case is a machine running Linux through WSL 2, a dual-boot Linux installation, or a custom appliance kernel—and even then, only if the Broadcom BDC gadget-controller driver is enabled and bound to supported hardware.

Cybersecurity illustration featuring a Linux penguin shield, protected chip, threat alerts, locks, and system workflow.The Bug Is in Driver Removal, Not USB Enumeration​

The vulnerable component is the Broadcom Device Controller, or BDC, USB gadget driver. In Linux terminology, a gadget controller presents the machine as a USB peripheral to another system; it is not the same role as the host controller that accepts a USB flash drive or external keyboard.

The Kernel Driver Database identifies the option as

CONFIG_USB_BDC_UDC

, a tristate configuration that builds the

bdc

module. It depends on

CONFIG_USB_GADGET

and DMA support. In practical terms, a general-purpose Linux server or desktop kernel can contain the source code without ever exposing the vulnerable path: it needs the driver compiled in or available as a module, compatible Broadcom BDC hardware, and the driver to be active.

That is the first important narrowing of the CVE’s broad version range. Kernel.org marks the flaw as present from Linux 3.19 onward until the listed stable fixes, but kernel version alone is not an exposure test. A distro kernel can be in an affected version range and still be operationally unaffected if

CONFIG_USB_BDC_UDC

is disabled, if the

bdc

module is absent, or if the system has no matching device-controller hardware.

The vulnerability appears while the driver is coming apart. Before the fix, initialization used

devm_request_irq()

, which made the device-resource framework responsible for releasing the interrupt handler. That release happens only after the driver’s

bdc_remove()

routine returns. But

bdc_remove()

itself manually tears down USB endpoint objects, frees a DMA-coherent status-report ring, and releases the endpoint array before returning.

That ordering creates a small but real race: the hardware can still signal an interrupt after those structures have been freed. The interrupt routine can then access either cleared or already-released memory. The CVE description specifically calls out access to the status-report ring and callbacks that index into the freed endpoint array.

The defect is therefore not a matter of a malformed USB device being parsed incorrectly. It is a lifetime-management problem in the driver’s own shutdown sequence. An attacker would need a route to cause or influence the relevant local driver and hardware state, which is consistent with kernel.org’s

AV:L/PR:L

CVSS vector.


The Delayed Work Item Makes the Failure Window Last Longer​

The interrupt race was only half the cleanup problem. The BDC interrupt path can schedule delayed work called

func_wake_notify

, and the delayed-work callback can schedule itself again. According to the kernel.org description carried by NVD, the driver previously had no cancellation path for that work.

That means the hazard could survive beyond the immediate interrupt window. A queued callback could execute after

bdc_remove()

had returned and after device-managed cleanup had freed the driver’s own structure. At that point, the delayed-work callback would dereference memory that no longer belongs to the driver.

The fix changes ownership and ordering rather than attempting to suppress a symptom. It replaces

devm_request_irq()

with an explicit

request_irq()

, then does the following before endpoint and DMA teardown:

  • It clears the controller’s global interrupt-enable state so the hardware stops asserting new interrupts.
  • It calls free_irq() to unregister the handler and wait for any handler already in flight.
  • It calls cancel_delayed_work_sync() to ensure func_wake_notify cannot execute or requeue itself after the driver’s memory is released.

The patch also repairs failure handling during initialization. If endpoint setup fails after the interrupt has been acquired, the error path now frees the IRQ rather than returning directly and relying on later device-managed cleanup. That is a meaningful detail: teardown bugs often reappear on error paths after a clean remove path has been fixed.

Kernel.org says the issue was found by an in-house static-analysis tool. No public exploit, crash report campaign, or independent exploitation report was identified in the initial public record. Administrators should treat it as a patched kernel-memory-safety flaw, not as evidence that Broadcom USB devices in general are under active attack.

Why the Hardware Scope Is Narrow but Worth Checking​

The BDC driver supports Broadcom USB 3.0 device-controller IP, including platform-device configurations described by

brcm,bdc

and related device-tree compatible strings. The Kernel Driver Database also records historical PCI support for Broadcom vendor ID

14e4

, device ID

1570

, identified there as a 720p FaceTime HD Camera.

That PCI identifier should not be turned into a blanket claim that every Mac camera, every Broadcom adapter, or every laptop containing a Broadcom component is vulnerable. The driver’s exposure depends on the local kernel configuration and whether the hardware is attached through the BDC driver. A Broadcom Wi-Fi chip, Bluetooth adapter, Ethernet controller, or ordinary USB peripheral is unrelated to this CVE.

For Linux administrators, the quickest inventory starts with the kernel configuration:

grep -E 'CONFIG_USB_BDC_UDC|CONFIG_USB_BDC_PCI' /boot/config-$(uname -r)

On distributions that expose the running configuration through

/proc/config.gz

, the equivalent is:

zgrep -E 'CONFIG_USB_BDC_UDC|CONFIG_USB_BDC_PCI' /proc/config.gz

A value of

# CONFIG_USB_BDC_UDC is not set

removes the driver from the kernel build. A value of

CONFIG_USB_BDC_UDC=m

means it is available as a module, while

=y

means it is built into the kernel. On systems where it is modular,

modinfo bdc

and

lsmod | grep '^bdc'

can establish whether the module exists and is presently loaded.

A configuration hit should lead to hardware and deployment review, not immediate assumptions of exploitation. Embedded products and custom Linux images that use USB gadget functionality deserve the fastest review, particularly where hardware can be removed, reprobed, reset, or exposed to local administrative users. Fleet operators using stock server kernels should still check the configuration, but they should not turn a driver-specific CVE into an emergency reboot of every Linux virtual machine.


Fixed Stable Kernels Are the Clean Remediation Path​

Kernel.org’s affected-version data says the BDC driver has existed since Linux 3.19, but the resolved stable lines currently begin at Linux 6.6.148, 6.12.101, 6.18.42, and 7.1.6. The upstream development fix is present in 7.2-rc5. Systems pinned to older end-of-life kernel series will not receive one of those stable releases and need either a vendor backport, an upgrade to a supported kernel line, or a narrowly reviewed backport of the relevant patch.

The practical remediation order is straightforward:

  1. Confirm whether CONFIG_USB_BDC_UDC is enabled and whether affected BDC hardware exists.
  2. Install the vendor kernel update that incorporates the applicable stable fix.
  3. Reboot into the new kernel, because the vulnerable interrupt and workqueue code is resident kernel code.
  4. If an immediate update is impossible, disable or avoid loading the bdc module where it is not required, while recognizing that this is a temporary exposure reduction rather than a substitute for a corrected kernel.

The CVE record’s broad “Linux” product label is technically accurate but operationally incomplete. The actionable population is much smaller: Linux systems running the Broadcom BDC USB gadget driver on matching hardware. Those systems should move to their vendor’s kernel containing the fix; everyone else should verify the driver configuration before treating CVE-2026-64583 as an active fleet-wide incident.


References​

  1. Primary source: NVD / Linux Kernel
    Published: August 9, 2026 at 8:43 AM UTC
  2. Security advisory: MSRC
    Published: August 9, 2026 at 8:43 AM UTC
    Original feed URL
  3. Related coverage: code.googlesource.com
  4. Related coverage: code.googlesource.com
  5. Related coverage: linux.googlesource.com
  6. Related coverage: kernel.googlesource.com
  7. Related coverage: kernel.googlesource.com