[PATCH] ASoC: cs35l56: Destroy workqueue in probe error path

Richard Fitzgerald posted 1 patch 1 month, 1 week ago
sound/soc/codecs/cs35l56.c | 3 +++
1 file changed, 3 insertions(+)
[PATCH] ASoC: cs35l56: Destroy workqueue in probe error path
Posted by Richard Fitzgerald 1 month, 1 week ago
The error path in cs35l56_common_probe() should call destroy_workqueue()
on the workqueue that was created by cs35l56_dsp_init().

Fixes: e49611252900 ("ASoC: cs35l56: Add driver for Cirrus Logic CS35L56")
Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
---
 sound/soc/codecs/cs35l56.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sound/soc/codecs/cs35l56.c b/sound/soc/codecs/cs35l56.c
index 378017fcea10..401a41b648f5 100644
--- a/sound/soc/codecs/cs35l56.c
+++ b/sound/soc/codecs/cs35l56.c
@@ -1970,6 +1970,9 @@ int cs35l56_common_probe(struct cs35l56_private *cs35l56)
 	gpiod_set_value_cansleep(cs35l56->base.reset_gpio, 0);
 	regulator_bulk_disable(ARRAY_SIZE(cs35l56->supplies), cs35l56->supplies);
 
+	if (cs35l56->dsp_wq)
+		destroy_workqueue(cs35l56->dsp_wq);
+
 	return ret;
 }
 EXPORT_SYMBOL_NS_GPL(cs35l56_common_probe, "SND_SOC_CS35L56_CORE");
-- 
2.47.3
Re: [PATCH] ASoC: cs35l56: Destroy workqueue in probe error path
Posted by Richard Fitzgerald 1 month, 1 week ago
On 1/5/26 11:30, Richard Fitzgerald wrote:
> The error path in cs35l56_common_probe() should call destroy_workqueue()
> on the workqueue that was created by cs35l56_dsp_init().
> 
> Fixes: e49611252900 ("ASoC: cs35l56: Add driver for Cirrus Logic CS35L56")
> Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com>
> ---
>   sound/soc/codecs/cs35l56.c | 3 +++
>   1 file changed, 3 insertions(+)
> 
> diff --git a/sound/soc/codecs/cs35l56.c b/sound/soc/codecs/cs35l56.c
> index 378017fcea10..401a41b648f5 100644
> --- a/sound/soc/codecs/cs35l56.c
> +++ b/sound/soc/codecs/cs35l56.c
> @@ -1970,6 +1970,9 @@ int cs35l56_common_probe(struct cs35l56_private *cs35l56)
>   	gpiod_set_value_cansleep(cs35l56->base.reset_gpio, 0);
>   	regulator_bulk_disable(ARRAY_SIZE(cs35l56->supplies), cs35l56->supplies);
>   
> +	if (cs35l56->dsp_wq)
> +		destroy_workqueue(cs35l56->dsp_wq);
> +
>   	return ret;
>   }
>   EXPORT_SYMBOL_NS_GPL(cs35l56_common_probe, "SND_SOC_CS35L56_CORE");

On second thoughts, it would be better to change the queue creation to
use the new devm-managed functions. I'll do a V2 to fix it that way.