Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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;
}