[PATCH] Au1550 AC'97 OSS driver spinlock fixes
authorSergei Shtylylov <sshtylyov@ru.mvista.com>
Thu, 15 Dec 2005 20:34:30 +0000 (12:34 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Thu, 15 Dec 2005 22:22:45 +0000 (14:22 -0800)
commit7b6666530e2736f190a2629c8abe34275054449f
tree677a4dc1ba95a98c6c6a98949fdcb0bca95ba1cf
parent2f40fb72a2121da44c35f2588ee9abce1dffa2a9
[PATCH] Au1550 AC'97 OSS driver spinlock fixes

We have found some issues with Au1550 AC'97 OSS driver in 2.6
(sound/oss/au1550_ac97.c), though it also should concern 2.4 driver
(drivers/sound/au1550_psc.c).

start_dac() grabs a spinlock already held by its caller, au1550_write().
This doesn't show up with the standard UP spinlock impelmentation but when
the different one (mutex based) is in use, a lockup happens.

And the interrupt handlers also didn't grab the spinlock -- that's OK in
the usual kernel but not when the IRQ handlers are threaded.  So, they're
grabbing the spinlock now (as every correct interrupt handler should do).

Signed-off-by: Konstantin Baidarov <kbaidarov@ru.mvista.com>
Signed-off-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
sound/oss/au1550_ac97.c