Skip to content
This repository was archived by the owner on Sep 11, 2019. It is now read-only.

Commit bff5235

Browse files
Enric Balletbo i SerraFelipe Balbi
Enric Balletbo i Serra
authored and
Felipe Balbi
committed
usb: dwc3: of-simple: fix oops by unbalanced clk disable call
dwc3_of_simple_dev_pm_ops has never been used since commit a0d8c4c ("usb: dwc3: of-simple: set dev_pm_ops"), but this commit has brought and oops when unbind the device due this sequence: dwc3_of_simple_remove -> clk_disable ... -> pm_runtime_put_sync -> dwc3_of_simple_runtime_suspend -> clk_disable (again) This double call to clk_core_disable causes a kernel oops like this: WARNING: CPU: 1 PID: 4022 at drivers/clk/clk.c:656 clk_core_disable+0x78/0x80 CPU: 1 PID: 4022 Comm: bash Not tainted 4.15.0-rc4+ GrapheneOS#44 Hardware name: Google Kevin (DT) pstate: 80000085 (Nzcv daIf -PAN -UAO) pc : clk_core_disable+0x78/0x80 lr : clk_core_disable_lock+0x20/0x38 sp : ffff00000bbf3a90 ... Call trace: clk_core_disable+0x78/0x80 clk_disable+0x1c/0x30 dwc3_of_simple_runtime_suspend+0x30/0x50 pm_generic_runtime_suspend+0x28/0x40 This patch fixes the unbalanced clk disable call by setting the num_clocks variable to zero once the clocks were disabled. Fixes: a0d8c4c ("usb: dwc3: of-simple: set dev_pm_ops") Signed-off-by: Enric Balletbo i Serra <[email protected]> Signed-off-by: Felipe Balbi <[email protected]>
1 parent 7928b2c commit bff5235

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

drivers/usb/dwc3/dwc3-of-simple.c

+1
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ static int dwc3_of_simple_remove(struct platform_device *pdev)
143143
clk_disable_unprepare(simple->clks[i]);
144144
clk_put(simple->clks[i]);
145145
}
146+
simple->num_clocks = 0;
146147

147148
reset_control_assert(simple->resets);
148149
reset_control_put(simple->resets);

0 commit comments

Comments
 (0)