From: Nicolas Pitre Well, there is no such thing as a spin_trylock_irq() in the kernel. Signed-off-by: Nicolas Pitre Signed-off-by: Andrew Morton --- 25-akpm/drivers/net/smc91x.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletion(-) diff -puN drivers/net/smc91x.c~smc91x-fix-smp-lock-usage drivers/net/smc91x.c --- 25/drivers/net/smc91x.c~smc91x-fix-smp-lock-usage Thu Sep 30 17:46:48 2004 +++ 25-akpm/drivers/net/smc91x.c Thu Sep 30 17:46:48 2004 @@ -563,7 +563,15 @@ done: * any other concurrent access and C would always interrupt B. But life * isn't that easy in a SMP world... */ -#define smc_special_trylock(lock) spin_trylock_irq(lock) +#define smc_special_trylock(lock) \ +({ \ + int __ret; \ + local_irq_disable(); \ + __ret = spin_trylock(lock); \ + if ((!__ret) \ + local_irq_enable(); \ + __ret; \ +}) #define smc_special_lock(lock) spin_lock_irq(lock) #define smc_special_unlock(lock) spin_unlock_irq(lock) #else _