]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
ALSA: dice: fix to wait for releases of all ALSA character devices
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sat, 27 Oct 2018 08:13:31 +0000 (17:13 +0900)
committerTakashi Iwai <tiwai@suse.de>
Sat, 27 Oct 2018 14:52:58 +0000 (16:52 +0200)
In a development period for Linux kernel v4.20, drivers in ALSA firewire
stack were changed to wait for releases of all ALSA character devices at
.remove callback of bus driver. However, ALSA dice driver is partly out
of this change. This bug can bring fault to user process which holds
the last of character device in unplugging.

This commit fixes the driver to wait in the callback.

Fixes: 61ccc6f6b27c ('ALSA: firewire: block .remove callback of bus driver till all of ALSA character devices are released')
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/dice/dice.c

index 0f6dbcffe711d62cfcba5fa7e57194f7f1a70e71..ed50b222d36ea0d4dd7ddd4440ca8f62ce0e7d8a 100644 (file)
@@ -240,8 +240,8 @@ static void dice_remove(struct fw_unit *unit)
        cancel_delayed_work_sync(&dice->dwork);
 
        if (dice->registered) {
-               /* No need to wait for releasing card object in this context. */
-               snd_card_free_when_closed(dice->card);
+               // Block till all of ALSA character devices are released.
+               snd_card_free(dice->card);
        }
 
        mutex_destroy(&dice->mutex);