All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Kuninori Morimoto" <kuninori.morimoto.gx@renesas.com>
Cc: linux-sound@vger.kernel.org
Subject: Re: [PATCH 03/20] ASoC: soc-component: move snd_soc_register_[un]component() to soc-component.c
Date: Tue, 10 Nov 2026 05:30:09 +0000	[thread overview]
Message-ID: <sashiko-outbox-206296@kernel.org> (raw)
In-Reply-To: <874idpntsx.wl-kuninori.morimoto.gx@renesas.com>

Thank you for your contribution! Sashiko AI review found no new issues
in this patch, but noticed 1 related pre-existing issue it does not
introduce:
- [Medium] ASoC: dmaengine: memory leak in
  snd_dmaengine_pcm_unregister() [1]
--

commit a5f7b09ef3fb2f0bb4b4617d3a6ce6f9faafae80
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

ASoC: soc-component: move snd_soc_register_[un]component() to soc-component.c

This commit moves component registration and unregistration functions and
their declarations from soc-core.c and soc.h to soc-component.c and
soc-component.h.

> diff --git a/sound/soc/soc-component.c b/sound/soc/soc-component.c
> index 6dad994009bdb..a2f079cd8aae2 100644
> --- a/sound/soc/soc-component.c
> +++ b/sound/soc/soc-component.c
> @@ -1549,3 +1549,217 @@ struct snd_soc_component *snd_soc_component_lookup_by_name(const char *component

[ ... ]

> +void snd_soc_unregister_component_by_driver(struct device *dev,
> +					    const struct snd_soc_component_driver *component_driver)
> +{
> +	const char *driver_name = NULL;
> +
> +	if (component_driver)
> +		driver_name = component_driver->name;
> +
> +	guard(mutex)(&client_mutex);
> +
> +	while (1) {
> +		struct snd_soc_component *component;
> +
> +		component = snd_soc_lookup_component_nolocked(dev, driver_name);
> +		if (!component)
> +			break;
> +
> +		snd_soc_del_component_unlocked(component);
> +	}
> +}

[Severity: Medium]
This problem wasn't introduced by this patch, but can this loop cause
snd_dmaengine_pcm_unregister() to leak dmaengine_pcm structures and DMA
channels [1] when a device registers multiple dmaengine PCMs?

sound/soc/soc-generic-dmaengine-pcm.c:snd_dmaengine_pcm_unregister() {
	component = snd_soc_lookup_component(dev, SND_DMAENGINE_PCM_DRV_NAME);
	if (!component)
		return;

	pcm = snd_soc_component_to_priv(component);

	snd_soc_unregister_component_by_driver(dev, component->driver);
	dmaengine_pcm_release_chan(pcm);
	kfree(pcm);
}

When devres releases multiple PCMs registered via
devm_snd_dmaengine_pcm_register() on the same device, the first call to
snd_dmaengine_pcm_unregister() removes all components matching
SND_DMAENGINE_PCM_DRV_NAME.  Subsequent release callbacks then get NULL
from snd_soc_lookup_component() and return early without releasing their
DMA channels or freeing their pcm structures.

[1] https://sashiko.dev/#/bug/linux-259df7eb-71d4-4d88-9686-fca9af84a4de

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/878q31nttj.wl-kuninori.morimoto.gx@renesas.com?part=3

  reply	other threads:[~2026-11-10  5:30 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-10  5:23 [PATCH 00/20] ASoC: add new Component functions Kuninori Morimoto
2026-11-10  5:23 ` [PATCH 01/20] ASoC: soc-generic-dmaengine-pcm: move devm_snd_dmaengine_pcm_register() Kuninori Morimoto
2026-11-11 15:43   ` Alvin Šipraga
2026-11-10  5:23 ` [PATCH 02/20] ASoC: soc-component: rename snd_soc_component_{init/exit}_regmap() to snd_soc_component_regmap_{init/exit}() Kuninori Morimoto
2026-11-10  5:35   ` sashiko-bot
2026-11-10  5:23 ` [PATCH 03/20] ASoC: soc-component: move snd_soc_register_[un]component() to soc-component.c Kuninori Morimoto
2026-11-10  5:30   ` sashiko-bot [this message]
2026-11-11  5:05     ` Kuninori Morimoto
2026-11-11 15:43   ` Alvin Šipraga
2026-11-10  5:23 ` [PATCH 04/20] ASoC: soc-component: move devm_snd_soc_component_register() Kuninori Morimoto
2026-11-11 15:44   ` Alvin Šipraga
2026-11-10  5:23 ` [PATCH 05/20] ASoC: soc-component: move snd_soc_of_xlate_dai_name() to soc-component.c Kuninori Morimoto
2026-11-11 15:44   ` Alvin Šipraga
2026-11-10  5:23 ` [PATCH 06/20] ASoC: soc-component: makes regmap function to inline macro Kuninori Morimoto
2026-11-10  5:38   ` sashiko-bot
2026-11-11 15:45   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 07/20] ASoC: soc-component: add snd_soc_component_name_prefix() Kuninori Morimoto
2026-11-11 15:45   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 08/20] ASoC: soc-component: add snd_soc_component_to_dev() Kuninori Morimoto
2026-11-11 15:45   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 09/20] ASoC: soc-component: add snd_soc_component_to_driver() Kuninori Morimoto
2026-11-11 15:45   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 10/20] ASoC: soc-component: add snd_soc_component_to_card() Kuninori Morimoto
2026-11-11 15:46   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 11/20] ASoC: soc-component: add snd_soc_component_to_debugfs_root() Kuninori Morimoto
2026-11-11 15:46   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 12/20] ASoC: soc-component: add snd_soc_component_to_regmap() Kuninori Morimoto
2026-11-10  5:42   ` sashiko-bot
2026-11-11 15:46   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 13/20] ASoC: soc-component: add snd_soc_component_regcache_mark_dirty() Kuninori Morimoto
2026-11-11 15:46   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 14/20] ASoC: soc-component: add snd_soc_component_regcache_cache_only() Kuninori Morimoto
2026-11-11 15:47   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 15/20] ASoC: soc-component: add snd_soc_component_regcache_cache_bypass() Kuninori Morimoto
2026-11-11 15:47   ` Alvin Šipraga
2026-11-10  5:24 ` [PATCH 16/20] ASoC: soc-component: add snd_soc_component_regmap_multi_reg_write_bypassed() Kuninori Morimoto
2026-11-10  5:47   ` sashiko-bot
2026-11-10  5:24 ` [PATCH 17/20] ASoC: soc-component: add snd_soc_component_num_dai() Kuninori Morimoto
2026-11-11 15:47   ` Alvin Šipraga
2026-11-10  5:25 ` [PATCH 18/20] ASoC: soc-component: add snd_soc_component_connect_dai() Kuninori Morimoto
2026-11-11 15:48   ` Alvin Šipraga
2026-11-10  5:25 ` [PATCH 19/20] ASoC: soc-component: add snd_soc_component_active_update() Kuninori Morimoto
2026-11-11 15:48   ` Alvin Šipraga
2026-11-10  5:25 ` [PATCH 20/20] ASoC: soc-component: add snd_soc_component_device_link_{add/del}() Kuninori Morimoto
2026-11-11 15:48   ` Alvin Šipraga

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sashiko-outbox-206296@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=linux-sound@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.