diff options
author | Julia Lawall <julia@diku.dk> | 2010-05-26 17:59:27 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2010-05-27 09:47:02 +0200 |
commit | 1efddcc981c95e62c4e305fd462e3e98b6f9c5cd (patch) | |
tree | 9b2bea6600a1bf6c6a11aeca4ec001a793dc5dcc /sound | |
parent | 4daf7a0c0b3dd3c2e2ec829ecee8608d04d67773 (diff) |
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>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/mips/au1x00.c | 1 | ||||
-rw-r--r-- | sound/oss/dmasound/dmasound_atari.c | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/sound/mips/au1x00.c b/sound/mips/au1x00.c index 3e763d6a5d6..446cf974866 100644 --- a/sound/mips/au1x00.c +++ b/sound/mips/au1x00.c @@ -516,6 +516,7 @@ get the interrupt driven case to work efficiently */ break; if (i == 0x5000) { printk(KERN_ERR "au1000 AC97: AC97 command read timeout\n"); + spin_unlock(&au1000->ac97_lock); return 0; } diff --git a/sound/oss/dmasound/dmasound_atari.c b/sound/oss/dmasound/dmasound_atari.c index 1f477412306..13c214466d3 100644 --- a/sound/oss/dmasound/dmasound_atari.c +++ b/sound/oss/dmasound/dmasound_atari.c @@ -1277,7 +1277,7 @@ static irqreturn_t AtaInterrupt(int irq, void *dummy) * (almost) like on the TT. */ write_sq_ignore_int = 0; - return IRQ_HANDLED; + goto out; } 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. */ WAKE_UP(write_sq.sync_queue); - return IRQ_HANDLED; + goto out; } /* 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 is nothing to play any more. Wake up a process waiting for audio output to drain. */ +out: spin_unlock(&dmasound.lock); return IRQ_HANDLED; } |