On Fri, Apr 08, 2011 at 03:38:48PM +0800, Lu Guanqun wrote:
Fix the possible dead lock shown below:
spin_lock sst_get_stream_status sst_period_elapsed intel_sst_interrupt handle_IRQ_event handle_fasteoi_irq do_IRQ common_interrupt spin_lock sst_set_stream_status sst_platform_pcm_trigger
Signed-off-by: Lu Guanqun guanqun.lu@intel.com
This patch is based on Mark Brown's for-2.6.40 branch. It should be applied cleanly.
Thanks.
sound/soc/mid-x86/sst_platform.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/sound/soc/mid-x86/sst_platform.c b/sound/soc/mid-x86/sst_platform.c index 9ba9414..d827edb 100644 --- a/sound/soc/mid-x86/sst_platform.c +++ b/sound/soc/mid-x86/sst_platform.c @@ -116,18 +116,20 @@ struct snd_soc_dai_driver sst_platform_dai[] = { static inline void sst_set_stream_status(struct sst_runtime_stream *stream, int state) {
- spin_lock(&stream->status_lock);
- unsigned long flags;
- spin_lock_irqsave(&stream->status_lock, flags); stream->stream_status = state;
- spin_unlock(&stream->status_lock);
- spin_unlock_irqrestore(&stream->status_lock, flags);
}
static inline int sst_get_stream_status(struct sst_runtime_stream *stream) { int state;
- unsigned long flags;
- spin_lock(&stream->status_lock);
- spin_lock_irqsave(&stream->status_lock, flags); state = stream->stream_status;
- spin_unlock(&stream->status_lock);
- spin_unlock_irqrestore(&stream->status_lock, flags); return state;
}
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel