Merge of master.kernel.org:/home/rmk/linux-2.6-serial.git
authorLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 21 May 2005 22:04:27 +0000 (15:04 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 21 May 2005 22:04:27 +0000 (15:04 -0700)
include/linux/spinlock.h
kernel/spinlock.c

index e895f3e..d6ba068 100644 (file)
@@ -248,7 +248,7 @@ typedef struct {
 
 #define _spin_trylock_bh(lock) ({preempt_disable(); local_bh_disable(); \
                                _raw_spin_trylock(lock) ? \
-                               1 : ({preempt_enable(); local_bh_enable(); 0;});})
+                               1 : ({preempt_enable_no_resched(); local_bh_enable(); 0;});})
 
 #define _spin_lock(lock)       \
 do { \
@@ -383,7 +383,7 @@ do { \
 #define _spin_unlock_bh(lock) \
 do { \
        _raw_spin_unlock(lock); \
-       preempt_enable(); \
+       preempt_enable_no_resched(); \
        local_bh_enable(); \
        __release(lock); \
 } while (0)
@@ -391,7 +391,7 @@ do { \
 #define _write_unlock_bh(lock) \
 do { \
        _raw_write_unlock(lock); \
-       preempt_enable(); \
+       preempt_enable_no_resched(); \
        local_bh_enable(); \
        __release(lock); \
 } while (0)
@@ -423,8 +423,8 @@ do { \
 #define _read_unlock_bh(lock)  \
 do { \
        _raw_read_unlock(lock); \
+       preempt_enable_no_resched();    \
        local_bh_enable();      \
-       preempt_enable();       \
        __release(lock); \
 } while (0)
 
index e15ed17..0c3f9d8 100644 (file)
@@ -294,7 +294,7 @@ EXPORT_SYMBOL(_spin_unlock_irq);
 void __lockfunc _spin_unlock_bh(spinlock_t *lock)
 {
        _raw_spin_unlock(lock);
-       preempt_enable();
+       preempt_enable_no_resched();
        local_bh_enable();
 }
 EXPORT_SYMBOL(_spin_unlock_bh);
@@ -318,7 +318,7 @@ EXPORT_SYMBOL(_read_unlock_irq);
 void __lockfunc _read_unlock_bh(rwlock_t *lock)
 {
        _raw_read_unlock(lock);
-       preempt_enable();
+       preempt_enable_no_resched();
        local_bh_enable();
 }
 EXPORT_SYMBOL(_read_unlock_bh);
@@ -342,7 +342,7 @@ EXPORT_SYMBOL(_write_unlock_irq);
 void __lockfunc _write_unlock_bh(rwlock_t *lock)
 {
        _raw_write_unlock(lock);
-       preempt_enable();
+       preempt_enable_no_resched();
        local_bh_enable();
 }
 EXPORT_SYMBOL(_write_unlock_bh);
@@ -354,7 +354,7 @@ int __lockfunc _spin_trylock_bh(spinlock_t *lock)
        if (_raw_spin_trylock(lock))
                return 1;
 
-       preempt_enable();
+       preempt_enable_no_resched();
        local_bh_enable();
        return 0;
 }