diff --git a/sound/core/pcm.c b/sound/core/pcm.c index 2b5caa8dea2e2..a228bf9331102 100644 --- a/sound/core/pcm.c +++ b/sound/core/pcm.c @@ -875,7 +875,11 @@ EXPORT_SYMBOL(snd_pcm_new_internal); static void free_chmap(struct snd_pcm_str *pstr) { if (pstr->chmap_kctl) { - snd_ctl_remove(pstr->pcm->card, pstr->chmap_kctl); + struct snd_card *card = pstr->pcm->card; + + down_write(&card->controls_rwsem); + snd_ctl_remove(card, pstr->chmap_kctl); + up_write(&card->controls_rwsem); pstr->chmap_kctl = NULL; } }