mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
irqchip/mchp-eic: Fix clock reference leak in mchp_eic_probe()
of_clk_get_by_name() returns the clock with an elevated reference count
that mchp_eic_probe() keeps for the lifetime of the driver, but none of
the probe error paths drops it, so the reference is leaked whenever
probe fails after the clock has been obtained.
Put the reference in the error cleanup. The clk_prepare_enable()
failure path must jump there directly as it cannot call
clk_disable_unprepare() on a clock that was never enabled.
Fixes: 00fa3461c8 ("irqchip/mchp-eic: Add support for the Microchip EIC")
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Cc: stable@vger.kernel.org
Link: https://patch.msgid.link/20260916190349.2094401-1-vulab@iscas.ac.cn
This commit is contained in:
parent
8e6b8708f9
commit
af9c707eb0
|
|
@ -233,7 +233,7 @@ static int mchp_eic_probe(struct platform_device *pdev, struct device_node *pare
|
|||
|
||||
ret = clk_prepare_enable(eic->clk);
|
||||
if (ret)
|
||||
goto unmap;
|
||||
goto clk_put;
|
||||
|
||||
for (i = 0; i < MCHP_EIC_NIRQ; i++) {
|
||||
struct of_phandle_args irq;
|
||||
|
|
@ -270,6 +270,8 @@ static int mchp_eic_probe(struct platform_device *pdev, struct device_node *pare
|
|||
|
||||
clk_unprepare:
|
||||
clk_disable_unprepare(eic->clk);
|
||||
clk_put:
|
||||
clk_put(eic->clk);
|
||||
unmap:
|
||||
iounmap(eic->base);
|
||||
free:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user