pinctrl: samsung: Fix irq handling if an error occurs in exynos_irq_demux_eint16_31()
[ Upstream commit f686a2b52e9d78cf401f1b7f446bf0c3a81ebcc0 ]
chained_irq_enter(() should be paired with a corresponding
chained_irq_exit().
Here, if clk_enable() fails, a early return occurs and chained_irq_exit()
is not called.
Add a new label and a goto for fix it.
Fixes: f9c7447479 ("pinctrl: samsung: support a bus clock")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: André Draszik <andre.draszik@linaro.org>
Link: https://lore.kernel.org/r/f148d823acfb3326a115bd49a0eed60f2345f909.1731844995.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d3269ace10
commit
2bf01c4600
@@ -636,7 +636,7 @@ static void exynos_irq_demux_eint16_31(struct irq_desc *desc)
|
||||
if (clk_enable(b->drvdata->pclk)) {
|
||||
dev_err(b->gpio_chip.parent,
|
||||
"unable to enable clock for pending IRQs\n");
|
||||
return;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -652,6 +652,7 @@ static void exynos_irq_demux_eint16_31(struct irq_desc *desc)
|
||||
if (eintd->nr_banks)
|
||||
clk_disable(eintd->banks[0]->drvdata->pclk);
|
||||
|
||||
out:
|
||||
chained_irq_exit(chip, desc);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user