[lkml]   [2003]   [Aug]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH] fix trident.c lockup on module load 2.6.0-test2
Hi Linus, 

This patch fixes a kernel lockup with 2.6.0-test2 when the trident.c
OSS driver is loaded and the driver attempts to initialize the
card. The problem is that in ali_ac97_get() we lock the card->lock
spinlock, but never release it on the good path, only on the error
path. This patch adds the missing spin_unlock_irqrestore().

This bug snuck in in a 2.4 sync from Alan, and 2.4 appears to suffer
from the same problem. Patch will be send to Marcelo momentarily.

Patch is against 2.6.0-test2-cvs, tested and works, and fixes a pretty
severe lockup bug. Please apply.


Index: sound/oss/trident.c
RCS file: /home/cvs/linux-2.5/sound/oss/trident.c,v
retrieving revision 1.27
diff -u -r1.27 trident.c
--- sound/oss/trident.c 1 Aug 2003 19:02:34 -0000 1.27
+++ sound/oss/trident.c 9 Aug 2003 18:53:08 -0000
@@ -3017,6 +3017,8 @@

data = inl(TRID_REG(card, address));
+ spin_unlock_irqrestore(&card->lock, flags);

return ((u16) (data >> 16));
[unhandled content-type:application/pgp-signature]
 \ /
  Last update: 2005-03-22 13:47    [W:0.061 / U:0.928 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site