Commit 3b496131 authored by Miaoqian Lin's avatar Miaoqian Lin Committed by Greg Kroah-Hartman
Browse files

usb: dwc3: of-simple: fix clock resource leak in dwc3_of_simple_probe



When clk_bulk_prepare_enable() fails, the error path jumps to
err_resetc_assert, skipping clk_bulk_put_all() and leaking the
clock references acquired by clk_bulk_get_all().

Add err_clk_put_all label to properly release clock resources
in all error paths.

Found via static analysis and code review.

Fixes: c0c61471 ("usb: dwc3: of-simple: Convert to bulk clk API")
Cc: stable <stable@kernel.org>
Signed-off-by: default avatarMiaoqian Lin <linmq006@gmail.com>
Acked-by: default avatarThinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://patch.msgid.link/20251211064937.2360510-1-linmq006@gmail.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 14ad4c10
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -70,11 +70,11 @@ static int dwc3_of_simple_probe(struct platform_device *pdev)
	simple->num_clocks = ret;
	ret = clk_bulk_prepare_enable(simple->num_clocks, simple->clks);
	if (ret)
		goto err_resetc_assert;
		goto err_clk_put_all;

	ret = of_platform_populate(np, NULL, NULL, dev);
	if (ret)
		goto err_clk_put;
		goto err_clk_disable;

	pm_runtime_set_active(dev);
	pm_runtime_enable(dev);
@@ -82,8 +82,9 @@ static int dwc3_of_simple_probe(struct platform_device *pdev)

	return 0;

err_clk_put:
err_clk_disable:
	clk_bulk_disable_unprepare(simple->num_clocks, simple->clks);
err_clk_put_all:
	clk_bulk_put_all(simple->num_clocks, simple->clks);

err_resetc_assert: