Re: [PATCH 5/8] ASoC: codecs: wcd934x: fix resource leaks on component remove

Srinivas Kandagatla
2023-07-06T11:09:57Z

On 05/07/2023 13:30, Johan Hovold wrote:
> Make sure to release allocated MBHC resources also on component remove.
>
> This is specifically needed to allow probe deferrals of the sound card
> which otherwise fails when reprobing the codec component.
>
> Fixes: 9fb9b1690f0b ("ASoC: codecs: wcd934x: add mbhc support")
> Cc: stable@vger.kernel.org # 5.14
> Cc: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
> ---

Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

> sound/soc/codecs/wcd934x.c | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/sound/soc/codecs/wcd934x.c b/sound/soc/codecs/wcd934x.c
> index a17cd75b969b..1b6e376f3833 100644
> --- a/sound/soc/codecs/wcd934x.c
> +++ b/sound/soc/codecs/wcd934x.c
> @@ -3044,6 +3044,17 @@ static int wcd934x_mbhc_init(struct snd_soc_component *component)
>
> return 0;
> }
> +
> +static void wcd934x_mbhc_deinit(struct snd_soc_component *component)
> +{
> + struct wcd934x_codec *wcd = snd_soc_component_get_drvdata(component);
> +
> + if (!wcd->mbhc)
> + return;
> +
> + wcd_mbhc_deinit(wcd->mbhc);
> +}
> +
> static int wcd934x_comp_probe(struct snd_soc_component *component)
> {
> struct wcd934x_codec *wcd = dev_get_drvdata(component->dev);
> @@ -3077,6 +3088,7 @@ static void wcd934x_comp_remove(struct snd_soc_component *comp)
> {
> struct wcd934x_codec *wcd = dev_get_drvdata(comp->dev);
>
> + wcd934x_mbhc_deinit(comp);
> wcd_clsh_ctrl_free(wcd->clsh_ctrl);
> }
>