|
@@ -848,6 +848,7 @@ int snd_card_file_add(struct snd_card *card, struct file *file)
|
|
|
return -ENOMEM;
|
|
|
mfile->file = file;
|
|
|
mfile->disconnected_f_op = NULL;
|
|
|
+ INIT_LIST_HEAD(&mfile->shutdown_list);
|
|
|
spin_lock(&card->files_lock);
|
|
|
if (card->shutdown) {
|
|
|
spin_unlock(&card->files_lock);
|
|
@@ -883,6 +884,9 @@ int snd_card_file_remove(struct snd_card *card, struct file *file)
|
|
|
list_for_each_entry(mfile, &card->files_list, list) {
|
|
|
if (mfile->file == file) {
|
|
|
list_del(&mfile->list);
|
|
|
+ spin_lock(&shutdown_lock);
|
|
|
+ list_del(&mfile->shutdown_list);
|
|
|
+ spin_unlock(&shutdown_lock);
|
|
|
if (mfile->disconnected_f_op)
|
|
|
fops_put(mfile->disconnected_f_op);
|
|
|
found = mfile;
|