]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Sep 2022 05:44:58 +0000 (07:44 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Sep 2022 05:44:58 +0000 (07:44 +0200)
added patches:
usb-dwc3-fix-phy-disable-sequence.patch

queue-4.9/series
queue-4.9/usb-dwc3-fix-phy-disable-sequence.patch [new file with mode: 0644]

index 218bd113e2d93e1b464870e04e88b640c07ea8f7..4b0da93103af2eed35a2851b1ffea90918bc812a 100644 (file)
@@ -37,3 +37,4 @@ sch_sfb-don-t-assume-the-skb-is-still-around-after-e.patch
 tipc-fix-shift-wrapping-bug-in-map_get.patch
 tcp-fix-early-etimedout-after-spurious-non-sack-rto.patch
 sch_sfb-also-store-skb-len-before-calling-child-enqu.patch
+usb-dwc3-fix-phy-disable-sequence.patch
diff --git a/queue-4.9/usb-dwc3-fix-phy-disable-sequence.patch b/queue-4.9/usb-dwc3-fix-phy-disable-sequence.patch
new file mode 100644 (file)
index 0000000..61154f7
--- /dev/null
@@ -0,0 +1,80 @@
+From d2ac7bef95c9ead307801ccb6cb6dfbeb14247bf Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro@kernel.org>
+Date: Thu, 4 Aug 2022 17:09:53 +0200
+Subject: usb: dwc3: fix PHY disable sequence
+
+From: Johan Hovold <johan+linaro@kernel.org>
+
+commit d2ac7bef95c9ead307801ccb6cb6dfbeb14247bf upstream.
+
+Generic PHYs must be powered-off before they can be tore down.
+
+Similarly, suspending legacy PHYs after having powered them off makes no
+sense.
+
+Fix the dwc3_core_exit() (e.g. called during suspend) and open-coded
+dwc3_probe() error-path sequences that got this wrong.
+
+Note that this makes dwc3_core_exit() match the dwc3_core_init() error
+path with respect to powering off the PHYs.
+
+Fixes: 03c1fd622f72 ("usb: dwc3: core: add phy cleanup for probe error handling")
+Fixes: c499ff71ff2a ("usb: dwc3: core: re-factor init and exit paths")
+Cc: stable@vger.kernel.org      # 4.8
+Reviewed-by: Andrew Halaney <ahalaney@redhat.com>
+Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
+Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Link: https://lore.kernel.org/r/20220804151001.23612-2-johan+linaro@kernel.org
+[ johan: adjust context to 4.9 ]
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/usb/dwc3/core.c |   20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+--- a/drivers/usb/dwc3/core.c
++++ b/drivers/usb/dwc3/core.c
+@@ -602,15 +602,15 @@ static void dwc3_core_exit(struct dwc3 *
+ {
+       dwc3_event_buffers_cleanup(dwc);
+-      usb_phy_shutdown(dwc->usb2_phy);
+-      usb_phy_shutdown(dwc->usb3_phy);
+-      phy_exit(dwc->usb2_generic_phy);
+-      phy_exit(dwc->usb3_generic_phy);
+-
+       usb_phy_set_suspend(dwc->usb2_phy, 1);
+       usb_phy_set_suspend(dwc->usb3_phy, 1);
+       phy_power_off(dwc->usb2_generic_phy);
+       phy_power_off(dwc->usb3_generic_phy);
++
++      usb_phy_shutdown(dwc->usb2_phy);
++      usb_phy_shutdown(dwc->usb3_phy);
++      phy_exit(dwc->usb2_generic_phy);
++      phy_exit(dwc->usb3_generic_phy);
+ }
+ /**
+@@ -1149,16 +1149,16 @@ static int dwc3_probe(struct platform_de
+ err5:
+       dwc3_event_buffers_cleanup(dwc);
+-      usb_phy_shutdown(dwc->usb2_phy);
+-      usb_phy_shutdown(dwc->usb3_phy);
+-      phy_exit(dwc->usb2_generic_phy);
+-      phy_exit(dwc->usb3_generic_phy);
+-
+       usb_phy_set_suspend(dwc->usb2_phy, 1);
+       usb_phy_set_suspend(dwc->usb3_phy, 1);
+       phy_power_off(dwc->usb2_generic_phy);
+       phy_power_off(dwc->usb3_generic_phy);
++      usb_phy_shutdown(dwc->usb2_phy);
++      usb_phy_shutdown(dwc->usb3_phy);
++      phy_exit(dwc->usb2_generic_phy);
++      phy_exit(dwc->usb3_generic_phy);
++
+       dwc3_ulpi_exit(dwc);
+ err4: