AMD Au1x00 driver: buggy spinlocks
PATCH 1/1 AMD Au1x00 driver: buggy spinlocks
Hello.
AMD Au1x00 ALSA driver fails compilation with the alternate spinlock
implementation because it doesn't do locking/unlocking correctly in some places (passes spinlock by value).
WBR, Sergei
mips/au1x00.c +4 -4
@@ -474,7 +474,7 @@ snd_au1000_ac97_read(ac97_t *ac97, unsigu32 volatile cmd;u16 volatile data;int i; -spin_lock (au1000->ac97_lock); +spin_lock (&au1000->ac97_lock);/* would rather use the interupt than this polling but it works and I can't get the interupt driven case to work efficiently */ for (i =0 ; i <0x5000 ; i++)
@@ -497,7 +497,7 @@ get the interupt driven case to work eff } data = au1000->ac97_ioport->cmd &0xffff ; -spin_unlock (au1000->ac97_lock); +spin_unlock (&au1000->ac97_lock);return data;
@@ -509,7 +509,7 @@ snd_au1000_ac97_write(ac97_t *ac97, unsi {u32 cmd;int i; -spin_lock (au1000->ac97_lock); +spin_lock (&au1000->ac97_lock);/* would rather use the interupt than this polling but it works and I can't get the interupt driven case to work efficiently */ for (i =0 ; i <0x5000 ; i++)
@@ -522,7 +522,7 @@ get the interupt driven case to work eff cmd &= ~AC97C_READ ; cmd |= ((u32 ) val <<AC97C_WD_BIT ); au1000->ac97_ioport->cmd = cmd; -spin_unlock (au1000->ac97_lock); +spin_unlock (&au1000->ac97_lock); }static void snd_au1000_ac97_free (ac97_t *ac97)
Takashi Iwai
AppliedAt Thu, 27 Oct 2005 15:26:00 +0400,
Quoted 8 lines · Sergei Shtylylov
Hello.
AMD Au1x00 ALSA driver fails compilation with the alternate spinlock
implementation because it doesn't do locking/unlocking correctly in some places (passes spinlock by value).WBR, Sergei
Thanks, applied to ALSA CVS tree.
Takashi
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc.
Get Certified Today * Register for a JBoss Training Course Free Certification Exam for All Training Attendees Through End of 2005 Visit http://www.jboss.com/services/certification for more information