Unverified Commit 7d945b04 authored by Olivier Moysan's avatar Olivier Moysan Committed by Mark Brown
Browse files

ASoC: stm32: dfsdm: manage cb buffers cleanup



Ensure that resources allocated by iio_channel_get_all_cb()
are released on driver unbind.

Signed-off-by: default avatarOlivier Moysan <olivier.moysan@foss.st.com>
Link: https://lore.kernel.org/r/20221109170849.273719-1-olivier.moysan@foss.st.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 89cdb224
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -304,6 +304,11 @@ static int stm32_adfsdm_dummy_cb(const void *data, void *private)
	return 0;
}

static void stm32_adfsdm_cleanup(void *data)
{
	iio_channel_release_all_cb(data);
}

static struct snd_soc_component_driver stm32_adfsdm_soc_platform = {
	.open		= stm32_adfsdm_pcm_open,
	.close		= stm32_adfsdm_pcm_close,
@@ -350,6 +355,12 @@ static int stm32_adfsdm_probe(struct platform_device *pdev)
	if (IS_ERR(priv->iio_cb))
		return PTR_ERR(priv->iio_cb);

	ret = devm_add_action_or_reset(&pdev->dev, stm32_adfsdm_cleanup, priv->iio_cb);
	if (ret < 0)  {
		dev_err(&pdev->dev, "Unable to add action\n");
		return ret;
	}

	component = devm_kzalloc(&pdev->dev, sizeof(*component), GFP_KERNEL);
	if (!component)
		return -ENOMEM;