From: Takashi Iwai Date: Tue, 30 Sep 2008 09:54:12 +0000 (+0200) Subject: ALSA: remove unneeded power_mutex lock in snd_pcm_drop X-Git-Tag: v2.6.26.6~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7fa544746f2837f5d743b50e638fa60dd36da5a8;p=thirdparty%2Fkernel%2Fstable.git ALSA: remove unneeded power_mutex lock in snd_pcm_drop Upstream-commit-id: 24e8fc498e9618338854bfbcf8d1d737e0bf1775 The power_mutex lock in snd_pcm_drop may cause a possible deadlock chain, and above all, it's unneeded. Let's get rid of it. Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 61f5d425b6305..225112be94e5d 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -1545,16 +1545,10 @@ static int snd_pcm_drop(struct snd_pcm_substream *substream) card = substream->pcm->card; if (runtime->status->state == SNDRV_PCM_STATE_OPEN || - runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED) + runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED || + runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) return -EBADFD; - snd_power_lock(card); - if (runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) { - result = snd_power_wait(card, SNDRV_CTL_POWER_D0); - if (result < 0) - goto _unlock; - } - snd_pcm_stream_lock_irq(substream); /* resume pause */ if (runtime->status->state == SNDRV_PCM_STATE_PAUSED) @@ -1563,8 +1557,7 @@ static int snd_pcm_drop(struct snd_pcm_substream *substream) snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP); /* runtime->control->appl_ptr = runtime->status->hw_ptr; */ snd_pcm_stream_unlock_irq(substream); - _unlock: - snd_power_unlock(card); + return result; }