FAILED: patch "[PATCH] usb: dwc3: xilinx: fix error handling in zynqmp init error" failed to apply to 5.15-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x c1a0ecbf32c4b397353204e2ec94c5bb9f3300ed
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026060417-omit-definite-cb3f@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From c1a0ecbf32c4b397353204e2ec94c5bb9f3300ed Mon Sep 17 00:00:00 2001
From: Radhey Shyam Pandey <[email protected]>
Date: Tue, 19 May 2026 17:25:29 +0530
Subject: [PATCH] usb: dwc3: xilinx: fix error handling in zynqmp init error
paths
Fix error handling and resource cleanup i.e remove invalid phy_exit() after failed phy_init(), route failures through proper cleanup paths and return 0 explicitly on success.
drivers/usb/dwc3/dwc3-xilinx.c +15 -12
@@ -184,15 +184,13 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx *priv_data) } ret =phy_init (priv_data->usb3_phy); -if (ret <0 ) { -phy_exit (priv_data->usb3_phy); +if (ret <0 ) goto err; - } ret =reset_control_deassert (apbrst);if (ret <0 ) {dev_err (dev,"Failed to release APB reset\n" ); - goto err; + goto err_phy_exit; }if (priv_data->usb3_phy) {
@@ -208,26 +206,24 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx *priv_data) ret =reset_control_deassert (crst);if (ret <0 ) {dev_err (dev,"Failed to release core reset\n" ); - goto err; + goto err_phy_exit; } ret =reset_control_deassert (hibrst);if (ret <0 ) {dev_err (dev,"Failed to release hibernation reset\n" ); - goto err; + goto err_phy_exit; } ret =phy_power_on (priv_data->usb3_phy); -if (ret <0 ) { -phy_exit (priv_data->usb3_phy); - goto err; - } +if (ret <0 ) + goto err_phy_exit;/* ulpi reset via gpio-modepin or gpio-framework driver */ reset_gpio =devm_gpiod_get_optional (dev,"reset" ,GPIOD_OUT_HIGH );if (IS_ERR (reset_gpio)) { -return dev_err_probe (dev,PTR_ERR (reset_gpio), -"Failed to request reset GPIO\n" ); + ret =PTR_ERR (reset_gpio); + goto err_phy_power_off; }if (reset_gpio) {
@@ -237,6 +233,13 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx *priv_data) }dwc3_xlnx_set_coherency (priv_data,XLNX_USB_TRAFFIC_ROUTE_CONFIG ); + +return 0 ; + +err_phy_power_off: +phy_power_off (priv_data->usb3_phy); +err_phy_exit: +phy_exit (priv_data->usb3_phy); err:return ret; }
Sasha Levin
maintainerPATCH 1/1 usb: dwc3: xilinx: fix error handling in zynqmp init error paths
From: Radhey Shyam Pandey <[email protected]>
[ Upstream commit c1a0ecbf32c4b397353204e2ec94c5bb9f3300ed ]
Fix error handling and resource cleanup i.e remove invalid phy_exit() after failed phy_init(), route failures through proper cleanup paths and return 0 explicitly on success.
--- drivers/usb/dwc3/dwc3-xilinx.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
drivers/usb/dwc3/dwc3-xilinx.c +10 -10
@@ -165,15 +165,13 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx *priv_data) } ret =phy_init (usb3_phy); -if (ret <0 ) { -phy_exit (usb3_phy); +if (ret <0 ) goto err; - } ret =reset_control_deassert (apbrst);if (ret <0 ) {dev_err (dev,"Failed to release APB reset\n" ); - goto err; + goto err_phy_exit; }/* Set PIPE Power Present signal in FPD Power Present Register*/
@@ -185,20 +183,18 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx *priv_data) ret =reset_control_deassert (crst);if (ret <0 ) {dev_err (dev,"Failed to release core reset\n" ); - goto err; + goto err_phy_exit; } ret =reset_control_deassert (hibrst);if (ret <0 ) {dev_err (dev,"Failed to release hibernation reset\n" ); - goto err; + goto err_phy_exit; } ret =phy_power_on (usb3_phy); -if (ret <0 ) { -phy_exit (usb3_phy); - goto err; - } +if (ret <0 ) + goto err_phy_exit; skip_usb3_phy:/*
@@ -212,6 +208,10 @@ static int dwc3_xlnx_init_zynqmp(struct dwc3_xlnx *priv_data)writel (reg, priv_data->regs +XLNX_USB_TRAFFIC_ROUTE_CONFIG ); } +return 0 ; + +err_phy_exit: +phy_exit (usb3_phy); err:return ret; }
Signature · 1 line
2.53.0