Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73d38b13 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

[ALSA] Fix the race of card instance unregistration



Move the call of device_unregister() for the card instance in
snd_card_disconnect() to avoid the race of sysfs card entry, which
can be typically found on usb-audio reconnection.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 20861fa7
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -360,6 +360,12 @@ int snd_card_disconnect(struct snd_card *card)
		snd_printk(KERN_ERR "not all devices for card %i can be disconnected\n", card->number);

	snd_info_card_disconnect(card);
#ifndef CONFIG_SYSFS_DEPRECATED
	if (card->card_dev) {
		device_unregister(card->card_dev);
		card->card_dev = NULL;
	}
#endif
	return 0;	
}

@@ -401,10 +407,6 @@ static int snd_card_do_free(struct snd_card *card)
		snd_printk(KERN_WARNING "unable to free card info\n");
		/* Not fatal error */
	}
#ifndef CONFIG_SYSFS_DEPRECATED
	if (card->card_dev)
		device_unregister(card->card_dev);
#endif
	kfree(card);
	return 0;
}