[PATCH] ALSA: core: Make sure to call snd_card_disconnect() at freeing

From: Takashi Iwai

Date: Thu Oct 01 2026 - 09:26:40 EST


When a card object gets freed via devres, it might be freed without
calling snd_card_disconnect(), and it might forget to release some
resources such as the procfs that gets deleted at the disconnect call.

Add an explicit call of snd_card_disconnect() at snd_card_do_free()
for assuring the preparation for cleanup.

Fixes: e8ad415b7a55 ("ALSA: core: Add managed card creation")
Signed-off-by: Takashi Iwai <tiwai@xxxxxxx>
---

This patch is required as a prerequisite for the recent cleanup series
to use auto-cleanup:
http://lore.kernel.org/20261001110447.486782-1-tiwai@xxxxxxx

sound/core/init.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/sound/core/init.c b/sound/core/init.c
index 0897b3a11617..764d3d1073e7 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -564,6 +564,10 @@ static int snd_card_do_free(struct snd_card *card)
bool managed = card->managed;

card->releasing = true;
+
+ /* for case without explicit disconnect call (e.g. via devres) */
+ snd_card_disconnect(card);
+
#if IS_ENABLED(CONFIG_SND_MIXER_OSS)
if (snd_mixer_oss_notify_callback)
snd_mixer_oss_notify_callback(card, SND_MIXER_OSS_NOTIFY_FREE);
--
2.55.0