diff --git a/sound/core/pcm.c b/sound/core/pcm.c index 01b9d62eef14d..b6ed38dec4357 100644 --- a/sound/core/pcm.c +++ b/sound/core/pcm.c @@ -874,7 +874,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; } }