From aee70400184b6a8d39243b02c244aed61259a46b Mon Sep 17 00:00:00 2001 From: Clemens Ladisch Date: Wed, 11 May 2011 10:53:12 +0200 Subject: [PATCH 7/9] 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 --- sound/firewire/isight.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/sound/firewire/isight.c b/sound/firewire/isight.c index 4d2edcf..9626743 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); -- 1.7.3.4