diff --git a/[refs] b/[refs] index 4e84e0c62751..7e4be19a0165 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b2e65c8e9133218eb28c30e79ddd3d66d4666ba0 +refs/heads/master: a45e3d6b13e97506b616980c0f122c3389bcefa4 diff --git a/trunk/sound/core/init.c b/trunk/sound/core/init.c index 3e65da21a08c..a0080aa45ae9 100644 --- a/trunk/sound/core/init.c +++ b/trunk/sound/core/init.c @@ -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;