Merge branch 'for-linus' into for-next
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
@@ -401,14 +401,7 @@ int snd_card_disconnect(struct snd_card *card)
|
||||
card->shutdown = 1;
|
||||
spin_unlock(&card->files_lock);
|
||||
|
||||
/* phase 1: disable fops (user space) operations for ALSA API */
|
||||
mutex_lock(&snd_card_mutex);
|
||||
snd_cards[card->number] = NULL;
|
||||
clear_bit(card->number, snd_cards_lock);
|
||||
mutex_unlock(&snd_card_mutex);
|
||||
|
||||
/* phase 2: replace file->f_op with special dummy operations */
|
||||
|
||||
/* replace file->f_op with special dummy operations */
|
||||
spin_lock(&card->files_lock);
|
||||
list_for_each_entry(mfile, &card->files_list, list) {
|
||||
/* it's critical part, use endless loop */
|
||||
@@ -424,7 +417,7 @@ int snd_card_disconnect(struct snd_card *card)
|
||||
}
|
||||
spin_unlock(&card->files_lock);
|
||||
|
||||
/* phase 3: notify all connected devices about disconnection */
|
||||
/* notify all connected devices about disconnection */
|
||||
/* at this point, they cannot respond to any calls except release() */
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_MIXER_OSS)
|
||||
@@ -440,6 +433,13 @@ int snd_card_disconnect(struct snd_card *card)
|
||||
device_del(&card->card_dev);
|
||||
card->registered = false;
|
||||
}
|
||||
|
||||
/* disable fops (user space) operations for ALSA API */
|
||||
mutex_lock(&snd_card_mutex);
|
||||
snd_cards[card->number] = NULL;
|
||||
clear_bit(card->number, snd_cards_lock);
|
||||
mutex_unlock(&snd_card_mutex);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
wake_up(&card->power_sleep);
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user