aboutsummaryrefslogtreecommitdiffstats
path: root/sound/oss/dmasound
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2010-05-26 17:59:27 +0200
committerTakashi Iwai <tiwai@suse.de>2010-05-27 09:47:02 +0200
commit1efddcc981c95e62c4e305fd462e3e98b6f9c5cd (patch)
tree9b2bea6600a1bf6c6a11aeca4ec001a793dc5dcc /sound/oss/dmasound
parent4daf7a0c0b3dd3c2e2ec829ecee8608d04d67773 (diff)
downloadkernel_goldelico_gta04-1efddcc981c95e62c4e305fd462e3e98b6f9c5cd.zip
kernel_goldelico_gta04-1efddcc981c95e62c4e305fd462e3e98b6f9c5cd.tar.gz
kernel_goldelico_gta04-1efddcc981c95e62c4e305fd462e3e98b6f9c5cd.tar.bz2
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/oss/dmasound')
-rw-r--r--sound/oss/dmasound/dmasound_atari.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sound/oss/dmasound/dmasound_atari.c b/sound/oss/dmasound/dmasound_atari.c
index 1f47741..13c2144 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;
}