]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
usb: dwc3: Abort suspend on soft disconnect failure
authorKuen-Han Tsai <khtsai@google.com>
Wed, 28 May 2025 10:03:11 +0000 (18:03 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jul 2025 16:32:11 +0000 (18:32 +0200)
commit17f94b1a7ffdb7c69758c7f76ddc3bf347e4d4d2
treeb12b4c8332342c65449a2b022f601cbe2899c451
parent07acd398613bd09a4d6e7d021d53b86f53d13dda
usb: dwc3: Abort suspend on soft disconnect failure

[ Upstream commit 630a1dec3b0eba2a695b9063f1c205d585cbfec9 ]

When dwc3_gadget_soft_disconnect() fails, dwc3_suspend_common() keeps
going with the suspend, resulting in a period where the power domain is
off, but the gadget driver remains connected.  Within this time frame,
invoking vbus_event_work() will cause an error as it attempts to access
DWC3 registers for endpoint disabling after the power domain has been
completely shut down.

Abort the suspend sequence when dwc3_gadget_suspend() cannot halt the
controller and proceeds with a soft connect.

Fixes: 9f8a67b65a49 ("usb: dwc3: gadget: fix gadget suspend/resume")
Cc: stable <stable@kernel.org>
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Signed-off-by: Kuen-Han Tsai <khtsai@google.com>
Link: https://lore.kernel.org/r/20250528100315.2162699-1-khtsai@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/usb/dwc3/core.c
drivers/usb/dwc3/gadget.c