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. Cheers, Muli. 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));