]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: codecs: wm0010: Fix error handling path in wm0010_spi_probe()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Mon, 10 Mar 2025 17:45:36 +0000 (18:45 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 11 Mar 2025 13:51:52 +0000 (13:51 +0000)
Free some resources in the error handling path of the probe, as already
done in the remove function.

Fixes: e3523e01869d ("ASoC: wm0010: Add initial wm0010 DSP driver")
Fixes: fd8b96574456 ("ASoC: wm0010: Clear IRQ as wake source and include missing header")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://patch.msgid.link/5139ba1ab8c4c157ce04e56096a0f54a1683195c.1741549792.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wm0010.c

index edd2cb185c42cfd3ac446b32ca7577e636744b76..9e67fbfc2ccaf8ba0cc9c2de66afe9df2c967b59 100644 (file)
@@ -920,7 +920,7 @@ static int wm0010_spi_probe(struct spi_device *spi)
        if (ret) {
                dev_err(wm0010->dev, "Failed to set IRQ %d as wake source: %d\n",
                        irq, ret);
-               return ret;
+               goto free_irq;
        }
 
        if (spi->max_speed_hz)
@@ -932,9 +932,18 @@ static int wm0010_spi_probe(struct spi_device *spi)
                                     &soc_component_dev_wm0010, wm0010_dai,
                                     ARRAY_SIZE(wm0010_dai));
        if (ret < 0)
-               return ret;
+               goto disable_irq_wake;
 
        return 0;
+
+disable_irq_wake:
+       irq_set_irq_wake(wm0010->irq, 0);
+
+free_irq:
+       if (wm0010->irq)
+               free_irq(wm0010->irq, wm0010);
+
+       return ret;
 }
 
 static void wm0010_spi_remove(struct spi_device *spi)