diff --git a/sound/firewire/bebob/bebob.c b/sound/firewire/bebob/bebob.c index 72b04214a3b5..3a5579cb3aa8 100644 --- a/sound/firewire/bebob/bebob.c +++ b/sound/firewire/bebob/bebob.c @@ -374,8 +374,8 @@ static void bebob_remove(struct fw_unit *unit) cancel_delayed_work_sync(&bebob->dwork); if (bebob->registered) { - /* No need to wait for releasing card object in this context. */ - snd_card_free_when_closed(bebob->card); + // Block till all of ALSA character devices are released. + snd_card_free(bebob->card); } else { /* Don't forget this case. */ bebob_free(bebob); diff --git a/sound/firewire/digi00x/digi00x.c b/sound/firewire/digi00x/digi00x.c index 654420f1c9bd..554d7ff737a2 100644 --- a/sound/firewire/digi00x/digi00x.c +++ b/sound/firewire/digi00x/digi00x.c @@ -172,8 +172,8 @@ static void snd_dg00x_remove(struct fw_unit *unit) cancel_delayed_work_sync(&dg00x->dwork); if (dg00x->registered) { - /* No need to wait for releasing card object in this context. */ - snd_card_free_when_closed(dg00x->card); + // Block till all of ALSA character devices are released. + snd_card_free(dg00x->card); } else { /* Don't forget this case. */ dg00x_free(dg00x); diff --git a/sound/firewire/fireface/ff.c b/sound/firewire/fireface/ff.c index 98731bd8816f..73425dfe63bf 100644 --- a/sound/firewire/fireface/ff.c +++ b/sound/firewire/fireface/ff.c @@ -145,8 +145,8 @@ static void snd_ff_remove(struct fw_unit *unit) cancel_work_sync(&ff->dwork.work); if (ff->registered) { - /* No need to wait for releasing card object in this context. */ - snd_card_free_when_closed(ff->card); + // Block till all of ALSA character devices are released. + snd_card_free(ff->card); } else { /* Don't forget this case. */ ff_free(ff); diff --git a/sound/firewire/fireworks/fireworks.c b/sound/firewire/fireworks/fireworks.c index f680e2f27806..5a17ead86e61 100644 --- a/sound/firewire/fireworks/fireworks.c +++ b/sound/firewire/fireworks/fireworks.c @@ -358,8 +358,8 @@ static void efw_remove(struct fw_unit *unit) cancel_delayed_work_sync(&efw->dwork); if (efw->registered) { - /* No need to wait for releasing card object in this context. */ - snd_card_free_when_closed(efw->card); + // Block till all of ALSA character devices are released. + snd_card_free(efw->card); } else { /* Don't forget this case. */ efw_free(efw); diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c index 30957477e005..1f591c8805ea 100644 --- a/sound/firewire/isight.c +++ b/sound/firewire/isight.c @@ -703,7 +703,8 @@ static void isight_remove(struct fw_unit *unit) isight_stop_streaming(isight); mutex_unlock(&isight->mutex); - snd_card_free_when_closed(isight->card); + // Block till all of ALSA character devices are released. + snd_card_free(isight->card); } static const struct ieee1394_device_id isight_id_table[] = { diff --git a/sound/firewire/motu/motu.c b/sound/firewire/motu/motu.c index fd5726424c7a..12680c85b37f 100644 --- a/sound/firewire/motu/motu.c +++ b/sound/firewire/motu/motu.c @@ -172,8 +172,8 @@ static void motu_remove(struct fw_unit *unit) cancel_delayed_work_sync(&motu->dwork); if (motu->registered) { - /* No need to wait for releasing card object in this context. */ - snd_card_free_when_closed(motu->card); + // Block till all of ALSA character devices are released. + snd_card_free(motu->card); } else { /* Don't forget this case. */ motu_free(motu); diff --git a/sound/firewire/oxfw/oxfw.c b/sound/firewire/oxfw/oxfw.c index 6ac551786b93..36f905b371e6 100644 --- a/sound/firewire/oxfw/oxfw.c +++ b/sound/firewire/oxfw/oxfw.c @@ -327,8 +327,8 @@ static void oxfw_remove(struct fw_unit *unit) cancel_delayed_work_sync(&oxfw->dwork); if (oxfw->registered) { - /* No need to wait for releasing card object in this context. */ - snd_card_free_when_closed(oxfw->card); + // Block till all of ALSA character devices are released. + snd_card_free(oxfw->card); } else { /* Don't forget this case. */ oxfw_free(oxfw); diff --git a/sound/firewire/tascam/tascam.c b/sound/firewire/tascam/tascam.c index 53f20153ba71..6f7aaa8c84aa 100644 --- a/sound/firewire/tascam/tascam.c +++ b/sound/firewire/tascam/tascam.c @@ -212,8 +212,8 @@ static void snd_tscm_remove(struct fw_unit *unit) cancel_delayed_work_sync(&tscm->dwork); if (tscm->registered) { - /* No need to wait for releasing card object in this context. */ - snd_card_free_when_closed(tscm->card); + // Block till all of ALSA character devices are released. + snd_card_free(tscm->card); } else { /* Don't forget this case. */ tscm_free(tscm);