[alsa-devel] [2.6.29-rc3][PATCH] OMAP: ASoC: Fix spinlock misuse in omap-pcm.c
From: Eero Nurkkala ext-eero.nurkkala@nokia.com
omap_pcm_trigger is called also in interrupt context so CPU flags must be restored when returning.
Signed-off-by: Eero Nurkkala ext-eero.nurkkala@nokia.com Acked-by: Jarkko Nikula jarkko.nikula@nokia.com --- sound/soc/omap/omap-pcm.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index b0362df..dd3bb29 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c @@ -175,9 +175,10 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd) { struct snd_pcm_runtime *runtime = substream->runtime; struct omap_runtime_data *prtd = runtime->private_data; + unsigned long flags; int ret = 0;
- spin_lock_irq(&prtd->lock); + spin_lock_irqsave(&prtd->lock, flags); switch (cmd) { case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_RESUME: @@ -195,7 +196,7 @@ static int omap_pcm_trigger(struct snd_pcm_substream *substream, int cmd) default: ret = -EINVAL; } - spin_unlock_irq(&prtd->lock); + spin_unlock_irqrestore(&prtd->lock, flags);
return ret; }
On Mon, Feb 02, 2009 at 02:20:46PM +0200, Jarkko Nikula wrote:
From: Eero Nurkkala ext-eero.nurkkala@nokia.com
omap_pcm_trigger is called also in interrupt context so CPU flags must be restored when returning.
Signed-off-by: Eero Nurkkala ext-eero.nurkkala@nokia.com Acked-by: Jarkko Nikula jarkko.nikula@nokia.com
Applied and pushed out to Takashi, thanks.
participants (2)
-
Jarkko Nikula
-
Mark Brown