ACK: [SRU][N/Q/R][PATCH 0/1] USB camera lost after suspend due to xhci endpoint_reset failure
Changwei Zou
changwei.zou at canonical.com
Mon May 25 23:54:33 UTC 2026
Acked-by: Changwei Zou <changwei.zou at canonical.com>
On 5/25/26 18:58, Aaron Ma wrote:
> BugLink: https://bugs.launchpad.net/bugs/2153966
>
> SRU Justification:
>
> [ Impact ]
> USB camera is lost after suspend. xhci_endpoint_disable() clears
> host_ep->hcpriv = NULL, which breaks xhci_endpoint_reset(). When uvcvideo
> calls usb_set_interface(), submits URBs that make host sequence state
> non-zero, then calls usb_clear_halt(), the device clears its sequence state
> but xhci_endpoint_reset() bails out because hcpriv is NULL. The next URB
> malfunctions: USB2 loses one packet, USB3 gets Transaction Error or may
> not complete at all on some host controllers from ASMedia and AMD.
>
> [ Fix ]
> Cherry-pick upstream mainline commit:
> - 25e531b422dc ("usb: xhci: Make usb_host_endpoint.hcpriv survive endpoint_disable()")
>
> Fixes: 18b74067ac78 ("xhci: Fix use-after-free regression in xhci clear hub TT implementation")
> Cc: stable at vger.kernel.org
>
> [ Test Plan ]
> 1. System with USB camera (uvcvideo bulk video device)
> 2. Suspend and resume the system
> 3. Verify camera is still available (/dev/video0 exists)
> 4. Verify no Transaction Errors in dmesg
> 5. Verify camera works in application (e.g. cheese, guvcview)
>
> [ Where problems could occur ]
> The fix removes one line (host_ep->hcpriv = NULL) from xhci_endpoint_disable().
> Risk is very low - the commit message explains hcpriv should only be NULL on
> emulated root hub endpoints, and core should not try to reset dropped endpoints.
>
>
> Michal Pecio (1):
> usb: xhci: Make usb_host_endpoint.hcpriv survive endpoint_disable()
>
> drivers/usb/host/xhci.c | 1 -
> include/linux/usb.h | 3 ++-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
More information about the kernel-team
mailing list