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

From: Takashi Iwai

Date: Thu Oct 01 2026 - 11:28:04 EST


On Thu, 01 Oct 2026 15:18:09 +0200,
Takashi Iwai wrote:
>
> 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

Scratch this (and the series above).

It turned out that this can be problematic in another subtle way.
Namely, when snd_card_disconnect() is called from the card_dev's
destructor, it can double-free the card_dev via device_del().
Skipping this call doesn't suffice as dpm_list may be still unbalanced
without the explicit call of device_del() beforehand...

A new fix and another series of cleanups will come up later.


Takashi