Commit 21dff434 authored by Eero Nurkkala's avatar Eero Nurkkala Committed by Mark Brown

OMAP: ASoC: Fix spinlock misuse in omap-pcm.c

omap_pcm_trigger is called also in interrupt context so CPU flags must
be restored when returning.
Signed-off-by: default avatarEero Nurkkala <ext-eero.nurkkala@nokia.com>
Acked-by: default avatarJarkko Nikula <jarkko.nikula@nokia.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent ef390c0b
...@@ -175,9 +175,10 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd) ...@@ -175,9 +175,10 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
{ {
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
struct omap_runtime_data *prtd = runtime->private_data; struct omap_runtime_data *prtd = runtime->private_data;
unsigned long flags;
int ret = 0; int ret = 0;
spin_lock_irq(&prtd->lock); spin_lock_irqsave(&prtd->lock, flags);
switch (cmd) { switch (cmd) {
case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_START:
case SNDRV_PCM_TRIGGER_RESUME: case SNDRV_PCM_TRIGGER_RESUME:
...@@ -195,7 +196,7 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd) ...@@ -195,7 +196,7 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
default: default:
ret = -EINVAL; ret = -EINVAL;
} }
spin_unlock_irq(&prtd->lock); spin_unlock_irqrestore(&prtd->lock, flags);
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment