summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThinh Nguyen <Thinh.Nguyen@synopsys.com>2024-02-16 00:41:02 +0000
committerNorihiko Hama <Norihiko.Hama@alpsalpine.com>2024-03-27 10:22:55 +0900
commita77f9293e056b9fa14f20ed7c31ed0a39a980bd3 (patch)
tree4352172571107e7bfdd72238aef9293141b79484
parent7a3f32b674cd5d7a44b5d2d51b8d8492168309ff (diff)
downloadcommon-a77f9293e056b9fa14f20ed7c31ed0a39a980bd3.tar.gz
UPSTREAM: usb: dwc3: gadget: Don't disconnect if not startedandroid13-5.15-2024-03_r2
commit b191a18cb5c47109ca696370a74a5062a70adfd0 upstream. Don't go through soft-disconnection sequence if the controller hasn't started. Otherwise, there will be timeout and warning reports from the soft-disconnection flow. Cc: stable@vger.kernel.org Fixes: 61a348857e86 ("usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend") Reported-by: Marek Szyprowski <m.szyprowski@samsung.com> Closes: https://lore.kernel.org/linux-usb/20240215233536.7yejlj3zzkl23vjd@synopsys.com/T/#mb0661cd5f9272602af390c18392b9a36da4f96e6 Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Bug: 331142111 Bug: 331022424 Change-Id: Ic048c261cf6a053c12f6895c58736308ac2c3c57 (cherry picked from commit c98f2d25f8f64392e993e455033ba1befafbb583) Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com> Link: https://lore.kernel.org/r/e3be9b929934e0680a6f4b8f6eb11b18ae9c7e07.1708043922.git.Thinh.Nguyen@synopsys.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Norihiko Hama <Norihiko.Hama@alpsalpine.com>
-rw-r--r--drivers/usb/dwc3/gadget.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 43559d6f70e1..e2ab70d77141 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -2534,6 +2534,11 @@ static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc)
int ret;
spin_lock_irqsave(&dwc->lock, flags);
+ if (!dwc->pullups_connected) {
+ spin_unlock_irqrestore(&dwc->lock, flags);
+ return 0;
+ }
+
dwc->connected = false;
/*