diff options
author | Andrew Morton <akpm@osdl.org> | 2004-07-02 20:03:48 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-07-02 20:03:48 -0700 |
commit | bec7fcacd7f60fa70e5dbe13fc087d85d5d1f07b (patch) | |
tree | a6c0c31b9f1c360c412c814e04ea67773a221795 /sound | |
parent | c8c702b171d4cb16b28d4a4764cffde57a53f661 (diff) | |
download | history-bec7fcacd7f60fa70e5dbe13fc087d85d5d1f07b.tar.gz |
[PATCH] err1-14: sb_audio locking fix
Lamely fix a straightforward deadlock in sb_audio.c. Founf by the Stanford
locking checker.
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/oss/sb_audio.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sound/oss/sb_audio.c b/sound/oss/sb_audio.c index 40914dd0c6817a..75e54f6f638a1d 100644 --- a/sound/oss/sb_audio.c +++ b/sound/oss/sb_audio.c @@ -519,9 +519,11 @@ static int sbpro_audio_prepare_for_output(int dev, int bsize, int bcount) sb_dsp_command(devc, 0xa0 | bits); /* Mono output */ else sb_dsp_command(devc, 0xa8 | bits); /* Stereo output */ + spin_unlock_irqrestore(&devc->lock, flags); } else { + spin_unlock_irqrestore(&devc->lock, flags); tmp = sb_getmixer(devc, 0x0e); if (devc->channels == 1) tmp &= ~0x02; @@ -529,7 +531,6 @@ static int sbpro_audio_prepare_for_output(int dev, int bsize, int bcount) tmp |= 0x02; sb_setmixer(devc, 0x0e, tmp); } - spin_unlock_irqrestore(&devc->lock, flags); devc->trigger_bits = 0; return 0; } |