]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
pinctrl: samsung: Fix irq handling if an error occurs in exynos_irq_demux_eint16_31()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 17 Nov 2024 12:03:32 +0000 (13:03 +0100)
committerKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Mon, 2 Dec 2024 14:01:34 +0000 (15:01 +0100)
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: f9c744747973 ("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>
drivers/pinctrl/samsung/pinctrl-exynos.c

index b79c211c0374967a0305a341ae21310fc5744d91..ac6dc22b37c98ed5b7fca3335764f19abb2f71cc 100644 (file)
@@ -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);
 }