sound: Add missing spin_unlock
Add a spin_unlock missing on the error path. The semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @@ expression E1; @@ * spin_lock(E1,...); <+... when != E1 if (...) { ... when != E1 * return ...; } ...+> * spin_unlock(E1,...); // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
committed by
Takashi Iwai
parent
4daf7a0c0b
commit
1efddcc981
@@ -516,6 +516,7 @@ get the interrupt driven case to work efficiently */
|
|||||||
break;
|
break;
|
||||||
if (i == 0x5000) {
|
if (i == 0x5000) {
|
||||||
printk(KERN_ERR "au1000 AC97: AC97 command read timeout\n");
|
printk(KERN_ERR "au1000 AC97: AC97 command read timeout\n");
|
||||||
|
spin_unlock(&au1000->ac97_lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1277,7 +1277,7 @@ static irqreturn_t AtaInterrupt(int irq, void *dummy)
|
|||||||
* (almost) like on the TT.
|
* (almost) like on the TT.
|
||||||
*/
|
*/
|
||||||
write_sq_ignore_int = 0;
|
write_sq_ignore_int = 0;
|
||||||
return IRQ_HANDLED;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!write_sq.active) {
|
if (!write_sq.active) {
|
||||||
@@ -1285,7 +1285,7 @@ static irqreturn_t AtaInterrupt(int irq, void *dummy)
|
|||||||
* the sq variables, so better don't do anything here.
|
* the sq variables, so better don't do anything here.
|
||||||
*/
|
*/
|
||||||
WAKE_UP(write_sq.sync_queue);
|
WAKE_UP(write_sq.sync_queue);
|
||||||
return IRQ_HANDLED;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Probably ;) one frame is finished. Well, in fact it may be that a
|
/* Probably ;) one frame is finished. Well, in fact it may be that a
|
||||||
@@ -1322,6 +1322,7 @@ static irqreturn_t AtaInterrupt(int irq, void *dummy)
|
|||||||
/* We are not playing after AtaPlay(), so there
|
/* We are not playing after AtaPlay(), so there
|
||||||
is nothing to play any more. Wake up a process
|
is nothing to play any more. Wake up a process
|
||||||
waiting for audio output to drain. */
|
waiting for audio output to drain. */
|
||||||
|
out:
|
||||||
spin_unlock(&dmasound.lock);
|
spin_unlock(&dmasound.lock);
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user