[PATCH] ASoC: meson: aiu-fifo.c: use devm_kzalloc(), and remove .remove function

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Tue Sep 13 03:56:25 CEST 2022


Hi Jerome, Mark, again

> > > > Current aiu-fifo.c is using kzalloc()/kfree(), but we can replace
> > > > it by devm_kzalloc(), and remove kfree().
> > > > This patch do it.
> > 
> > > I'm not sure about this change Kuninori.
> > 
> > > This is the dai probe, not the device driver probe.
> > > If I'm not mistaken it gets called when binding the card.
> > 
> > > The components and card drivers are different here.
> > 
> > > If the card probes several times for any reason, EPROBE_DEFER for
> > > example, wouldn't this allocate the memory several times without
> > > releasing it ?
> > 
> > Yes, indeed.  You'd need to move the allocation to the device level
> > probe to convert to devm (which *would* be a good thing to do if
> > possible).
> 
> Oh, yes, indeed.
> I will fixup it in v2.

If there was EPROBE_DEFER issue, snd_soc_bind_card() will return at (A)
*before* calling probe callback on each DAIs at (B).
So, I think calling devm_kzalloc() at .probe is maybe no problem.

	static int snd_soc_bind_card(...)
	{
		...

		for_each_card_prelinks(card, i, dai_link) {
(A)			ret = snd_soc_add_pcm_runtime(card, dai_link);
			if (ret < 0)
				goto probe_end;
		}

		...

		/* probe all DAI links on this card */
(B)		ret = soc_probe_link_dais(card);
		...
	}

Thank you for your help !!

Best regards
---
Kuninori Morimoto


More information about the Alsa-devel mailing list