UBUNTU-CVE-2026-74437: Medium severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: media: uvcvideo: Fix deadlock if uvcstatusstop is called from asyncctrl.work If a UVC camera has an asynchronous control, uvcstatusstop may be called from asyncctrl.work: uvcctrlstatuseventwork() uvcctrlstatusevent() uvcctrlclearhandle() uvcpmput() uvcstatusput() uvcstatusstop() cancelworksync() This will cause a deadlock, since cancelworksync will wait for uvcctrlstatuseventwork to complete before returning. Fix this by returning early from uvcstatusstop if we are currently in the work function. flushstatus now remains false until uvcstatusstart is called again, ensuring that uvcctrlstatuseventwork won't resubmit the URB.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-aws-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1014.14~24.04.1 - Upgrade
Upgrade
ubuntu/linux-azure-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17~24.04.1 - Upgrade
Upgrade
ubuntu/linux-azure-fde-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1016.16~24.04.1 - Upgrade
Upgrade
ubuntu/linux-gcp-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1014.14~24.04.1 - Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-38.38~24.04.4 - Upgrade
Upgrade
ubuntu/linux-nvidia-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1024.25~24.04.1 - Upgrade
Upgrade
ubuntu/linux-oracle-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1013.13~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-38.38.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-38.38 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1014.14 - Upgrade
Upgrade
ubuntu/linux-azureto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-azure-fdeto a version that resolves this vulnerability.Fixed in 7.0.0-1016.16 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1014.14 - Upgrade
Upgrade
ubuntu/linux-gketo a version that resolves this vulnerability.Fixed in 7.0.0-1008.9 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1015.15 - Upgrade
Upgrade
ubuntu/linux-nvidia-bosto a version that resolves this vulnerability.Fixed in 7.0.0-2022.23 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1015.15 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1013.13 - Upgrade
Upgrade
ubuntu/linux-realtimeto a version that resolves this vulnerability.Fixed in 7.0.0-38.38.1 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-38.38.1 - Compensating control
Modify uvc_status_stop to return early when it is called from the async_ctrl.work function; keep flush_status false until uvc_status_start is called again so uvc_ctrl_status_event_work does not resubmit the URB.
Event History
Frequently Asked Questions
Which systems are exposed to this issue?
Systems using an affected Ubuntu kernel package listed in the advisory may be exposed when a UVC camera has an asynchronous control. The affected package families listed are linux-riscv, linux-realtime, linux-hwe-edge, linux-azure, linux-gcp, linux-azure-fde, linux-gke, and linux-aws-5.0.
What condition triggers the deadlock?
The deadlock occurs when uvc_status_stop is invoked from the async_ctrl.work path, specifically while uvc_ctrl_status_event_work is executing. In that situation, cancel_work_sync waits for the same work function to finish.
What operational impact does the fix address?
The fix prevents uvc_status_stop from waiting on the currently executing work function by returning early when called from that work context. It also keeps flush_status false until uvc_status_start runs again, preventing the work function from resubmitting the URB.