aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic
diff options
context:
space:
mode:
authorMathias Kresin <dev@kresin.me>2016-12-29 21:47:54 +0100
committerMathias Kresin <dev@kresin.me>2017-01-02 19:16:54 +0100
commitb35a41c139ec995e1d3096ce962f020053f3056e (patch)
tree6dd920956c2e873fcde84c4538528d15ce54ed8d /target/linux/generic
parentb28e94d4bfa1f81219765fc395e63ca81badd8df (diff)
downloadupstream-b35a41c139ec995e1d3096ce962f020053f3056e.tar.gz
upstream-b35a41c139ec995e1d3096ce962f020053f3056e.tar.bz2
upstream-b35a41c139ec995e1d3096ce962f020053f3056e.zip
generic: backport dwc2 kernel panic fix
In case the soft reset in dwc2_core_reset() timeouts, the hsotg->core_params are freed albeit it is owned by the core. This results into a kernel panic as shown in FS#351. Signed-off-by: Mathias Kresin <dev@kresin.me>
Diffstat (limited to 'target/linux/generic')
-rw-r--r--target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch24
1 files changed, 24 insertions, 0 deletions
diff --git a/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch b/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch
new file mode 100644
index 0000000000..3a27feac8f
--- /dev/null
+++ b/target/linux/generic/patches-4.4/098-usb-dwc2-Remove-unnecessary-kfree.patch
@@ -0,0 +1,24 @@
+From cd4b1e34655d46950c065d9284b596cd8d7b28cd Mon Sep 17 00:00:00 2001
+From: John Youn <johnyoun@synopsys.com>
+Date: Thu, 3 Nov 2016 17:55:45 -0700
+Subject: [PATCH] usb: dwc2: Remove unnecessary kfree
+
+This shouldn't be freed by the HCD as it is owned by the core and
+allocated with devm_kzalloc.
+
+Signed-off-by: John Youn <johnyoun@synopsys.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
+---
+ drivers/usb/dwc2/hcd.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/usb/dwc2/hcd.c
++++ b/drivers/usb/dwc2/hcd.c
+@@ -3160,7 +3160,6 @@ error3:
+ error2:
+ usb_put_hcd(hcd);
+ error1:
+- kfree(hsotg->core_params);
+
+ #ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
+ kfree(hsotg->last_frame_num_array);