From: Clemens Ladisch Date: Wed, 11 May 2011 08:53:12 +0000 (+0200) Subject: ALSA: isight: fix hang when unplugging a running device X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=aee70400184b6a8d39243b02c244aed61259a46b;p=mv-sheeva.git ALSA: isight: fix hang when unplugging a running device When aborting a PCM stream, the xrun is signaled only if the stream is running. When disconnecting a PCM stream, calling snd_card_disconnect() too early would change the stream into a non-running state and thus prevent the xrun from being noticed by user space. To prevent this, move the snd_card_disconnect() call after the xrun. Signed-off-by: Clemens Ladisch Signed-off-by: Takashi Iwai --- diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c index 4d2edcfdbbc..96267437d37 100644 --- a/sound/firewire/isight.c +++ b/sound/firewire/isight.c @@ -692,10 +692,9 @@ static int isight_remove(struct device *dev) { struct isight *isight = dev_get_drvdata(dev); - snd_card_disconnect(isight->card); - mutex_lock(&isight->mutex); isight_pcm_abort(isight); + snd_card_disconnect(isight->card); isight_stop_streaming(isight); mutex_unlock(&isight->mutex);