ALSA: pcm: Fix referred substream in snd_pcm_action_group() unlock loop

In the unlock loop of snd_pcm_action_group(), the object "s" is used
as the check of nonatomic PCM, but it should be rather "s1", which is
the iterator of the loop.  This supposedly causes a kernel panic when
the substreams in operatino are linked.

Fixes: 257f8cce5d ('ALSA: pcm: Allow nonatomic trigger operations')
Reported-and-tested-by: Arthur Marsh <arthur.marsh@internode.on.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Takashi Iwai 2014-10-13 23:14:46 +02:00
parent 3f4032861c
commit 811deedeba

View File

@ -818,7 +818,7 @@ static int snd_pcm_action_group(struct action_ops *ops,
/* unlock streams */ /* unlock streams */
snd_pcm_group_for_each_entry(s1, substream) { snd_pcm_group_for_each_entry(s1, substream) {
if (s1 != substream) { if (s1 != substream) {
if (s->pcm->nonatomic) if (s1->pcm->nonatomic)
mutex_unlock(&s1->self_group.mutex); mutex_unlock(&s1->self_group.mutex);
else else
spin_unlock(&s1->self_group.lock); spin_unlock(&s1->self_group.lock);