In the Linux kernel, the following vulnerability has been resolved:
usb: gadget: uvc: fix NULL pointer dereference during unbind race
Commit b81ac4395bbe ("usb: gadget: uvc: allow for application to cleanly shutdown") introduced two stages of synchronization waits totaling 1500ms in uvc_function_unbind() to prevent several types of kernel panics. However, this timing-based approach is insufficient during power management (PM) transitions.
When the PM subsystem starts freezing user space processes, the wait_event_interruptible_timeout() is aborted early, which allows the unbind thread to proceed and nullify the gadget pointer (cdev->gadget = NULL):
[ 814.123447][ T947] configfs-gadget.g1 gadget.0: uvc: uvc_function_unbind() [ 814.178583][ T3173] PM: suspend entry (deep) [ 814.192487][ T3173] Freezing user space processes [ 814.197668][ T947] configfs-gadget.g1 gadget.0: uvc: uvc_function_unbind no clean disconnect, wait for release
When the PM subsystem resumes or aborts the suspend and tasks are restarted, the V4L2 release path is executed and attempts to access the already nullified gadget pointer, triggering a kernel panic:
[ 814.292597][ C0] PM: pm_system_irq_wakeup: 479 triggered dhdpcie_host_wake [ 814.386727][ T3173] Restarting tasks ... [ 814.403522][ T4558] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000030 [ 814.404021][ T4558] pc : usb_gadget_deactivate+0x14/0xf4 [ 814.404031][ T4558] lr : usb_function_deactivate+0x54/0x94 [ 814.404078][ T4558] Call trace: [ 814.404080][ T4558] usb_gadget_deactivate+0x14/0xf4 [ 814.404083][ T4558] usb_function_deactivate+0x54/0x94 [ 814.404087][ T4558] uvc_function_disconnect+0x1c/0x5c [ 814.404092][ T4558] uvc_v4l2_release+0x44/0xac [ 814.404095][ T4558] v4l2_release+0xcc/0x130
Address the race condition and NULL pointer dereference by:
1. State Synchronization (flag + mutex) Introduce a 'func_unbound' flag in struct uvc_device. This allows uvc_function_disconnect() to safely skip accessing the nullified cdev->gadget pointer. As suggested by Alan Stern, this flag is protected by a new mutex (uvc->lock) to ensure proper memory ordering and prevent instruction reordering or speculative loads. This mutex is also used to protect 'func_connected' for consistent state management.
2. Explicit Synchronization (completion) Use a completion to synchronize uvc_function_unbind() with the uvc_vdev_release() callback. This prevents Use-After-Free (UAF) by ensuring struct uvc_device is freed after all video device resources are released.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linuxUpgrade linux-6.1 | May 3, 2026 | May 3, 2026 |
| Ubuntu | — | Upgrade linux-image-intel-iotgUpgrade linux-image-oem-20.04dUpgrade linux-image-6.8.0-1063-azureUpgrade linux-image-gkeop-5.15Upgrade linux-image-oem-22.04bUpgrade linux-image-realtime-5.15Upgrade linux-image-oracle-6.8Upgrade linux-image-6.8.0-1061-aws-fipsUpgrade linux-image-aws-fips-6.8Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-6.8.0-1062-azure-fdeUpgrade linux-image-5.15.0-1108-gkeUpgrade linux-image-5.15.0-1109-oracleUpgrade linux-image-5.15.0-1053-nvidia-tegra-igxUpgrade linux-image-6.8.0-1030-nvidia-tegraUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-1058-oracleUpgrade linux-image-6.8.0-136-generic-64kUpgrade linux-image-6.8.0-136-lowlatency-64kUpgrade linux-image-fips-6.8Upgrade linux-image-gcp-64kUpgrade linux-image-gcp-fips-5.15Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-generic-64k-5.15Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-raspi-6.8Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-6.8.0-136-genericUpgrade linux-image-generic-64kUpgrade linux-image-virtual-6.8Upgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-gke-64k-6.8Upgrade linux-image-5.15.0-1107-nvidia-lowlatencyUpgrade linux-image-realtime-6.8.1Upgrade linux-image-5.15.0-1053-nvidia-tegra-igx-rtUpgrade linux-image-azure-fdeUpgrade linux-image-5.15.0-1064-nvidia-tegraUpgrade linux-image-6.8.0-1063-azure-fipsUpgrade linux-image-oem-22.04dUpgrade linux-image-nvidia-tegraUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-5.15.0-1104-intel-iot-realtimeUpgrade linux-image-6.8.0-1030-nvidia-tegra-rtUpgrade linux-image-6.8.0-1061-ibmUpgrade linux-image-aws-64k-6.8Upgrade linux-image-azure-5.15Upgrade linux-image-raspi-5.15Upgrade linux-image-nvidia-tegra-rt-5.15Upgrade linux-image-raspi-realtimeUpgrade linux-image-6.8.0-1061-aws-64kUpgrade linux-image-6.8.0-1064-gcpUpgrade linux-image-oem-20.04cUpgrade linux-image-azureUpgrade linux-image-nvidia-tegra-igx-5.15Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-kvm-5.15Upgrade linux-image-xilinxUpgrade linux-image-5.15.0-184-lowlatencyUpgrade linux-image-5.15.0-1112-aws-64kUpgrade linux-image-azure-fipsUpgrade linux-image-realtimeUpgrade linux-image-azure-fips-6.8Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-oracle-64kUpgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-aws-lts-24.04Upgrade linux-image-lowlatency-5.15Upgrade linux-image-intelUpgrade linux-image-gke-64kUpgrade linux-image-azure-fde-5.15Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-azure-6.8Upgrade linux-image-gcp-fipsUpgrade linux-image-6.8.0-1059-gke-64kUpgrade linux-image-gcp-fips-6.8Upgrade linux-image-gkeopUpgrade linux-image-gke-6.8Upgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-kvmUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-laptop-23.10Upgrade linux-image-nvidia-6.8Upgrade linux-image-5.15.0-186-genericUpgrade linux-image-5.15.0-186-fipsUpgrade linux-image-5.15.0-186-generic-64kUpgrade linux-image-5.15.0-1064-nvidia-tegra-rtUpgrade linux-image-5.15.0-186-generic-lpaeUpgrade linux-image-nvidia-5.15Upgrade linux-image-nvidia-64kUpgrade linux-image-raspiUpgrade linux-image-6.8.0-1059-nvidiaUpgrade linux-image-xilinx-6.8Upgrade linux-image-oem-22.04cUpgrade linux-image-aws-6.8Upgrade linux-image-virtual-5.15Upgrade linux-image-generic-64k-6.8Upgrade linux-image-aws-fips-5.15Upgrade linux-image-gcpUpgrade linux-image-6.8.0-1059-nvidia-lowlatency-64kUpgrade linux-image-oracle-5.15Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-5.15.0-1117-azure-fipsUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-azure-lts-22.04Upgrade linux-image-azure-fips-5.15Upgrade linux-image-azure-fde-6.8Upgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-5.15.0-1112-awsUpgrade linux-image-lowlatency-6.8Upgrade linux-image-gkeUpgrade linux-image-oem-22.04Upgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-6.8.0-1058-oracle-64kUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-lowlatency-64kUpgrade linux-image-ibmUpgrade linux-image-nvidia-tegra-igxUpgrade linux-image-5.15.0-1106-raspiUpgrade linux-image-5.15.0-1095-gkeopUpgrade linux-image-raspi-nolpaeUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-azure-lts-24.04Upgrade linux-image-fips-5.15Upgrade linux-image-aws-lts-22.04Upgrade linux-image-6.8.0-1061-raspiUpgrade linux-image-5.15.0-1112-gcpUpgrade linux-image-6.8.0-1059-nvidia-64kUpgrade linux-image-5.15.0-1111-realtimeUpgrade linux-image-ibm-classicUpgrade linux-image-gkeop-6.8Upgrade linux-image-5.15.0-1107-intel-iotgUpgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-oem-20.04Upgrade linux-image-6.8.1-1056-realtimeUpgrade linux-image-6.8.0-1061-awsUpgrade linux-image-6.8.0-1046-gkeopUpgrade linux-image-5.15.0-184-lowlatency-64kUpgrade linux-image-nvidia-tegra-igx-rtUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-generic-6.8Upgrade linux-image-gke-5.15Upgrade linux-image-gcp-5.15Upgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-awsUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-generic-5.15Upgrade linux-image-genericUpgrade linux-image-aws-fipsUpgrade linux-image-aws-64kUpgrade linux-image-6.8.0-136-fipsUpgrade linux-image-6.8.0-1059-gkeUpgrade linux-image-5.15.0-1117-azure-fdeUpgrade linux-image-5.15.0-1112-gcp-fipsUpgrade linux-image-oracleUpgrade linux-image-oem-22.04aUpgrade linux-image-azure-cvmUpgrade linux-image-aws-64k-5.15Upgrade linux-image-nvidia-tegra-igx-rt-5.15Upgrade linux-image-5.15.0-1117-azureUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-lowlatencyUpgrade linux-image-ibm-5.15Upgrade linux-image-6.8.0-1059-nvidia-lowlatencyUpgrade linux-image-5.15.0-1107-nvidiaUpgrade linux-image-5.15.0-1104-kvmUpgrade linux-image-nvidiaUpgrade linux-image-nvidia-tegra-6.8Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-oem-20.04bUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-fipsUpgrade linux-image-aws-5.15Upgrade linux-image-6.8.0-2050-raspi-realtimeUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-generic-lpaeUpgrade linux-image-xilinx-zynqmpUpgrade linux-image-nvidia-tegra-5.15Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gcp-6.8Upgrade linux-image-6.8.0-1064-gcp-64kUpgrade linux-image-5.15.0-1106-ibmUpgrade linux-image-virtualUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-intel-iotg-5.15Upgrade linux-image-ibm-6.8Upgrade linux-image-5.15.0-1075-xilinx-zynqmpUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-oracle-lts-24.04Upgrade linux-image-gcp-lts-22.04Upgrade linux-image-6.8.0-1033-xilinxUpgrade linux-image-5.15.0-1112-aws-fipsUpgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-6.8.0-1064-gcp-fipsUpgrade linux-image-nvidia-lowlatency-5.15Upgrade linux-image-6.8.0-136-lowlatency | May 25, 2026 | May 1, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | May 27, 2026 | May 1, 2026 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub