CRIS: assignment/is equal confusion
authorRoel Kluin <roel.kluin@gmail.com>
Mon, 8 Jun 2009 11:04:43 +0000 (13:04 +0200)
committerJesper Nilsson <jesper.nilsson@axis.com>
Mon, 8 Jun 2009 11:05:19 +0000 (13:05 +0200)
Somehow, the assignments of rw->lock got written as comparisons.
The effect probably was that the read-write spinlocks never locked.
However, since the locks are only used in CONFIG_SMP and SMP CRIS is
experimental, it has never been identified as a problem.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com>
arch/cris/include/arch-v32/arch/spinlock.h

index 129756b..367a53e 100644 (file)
@@ -78,7 +78,7 @@ static  inline void __raw_write_lock(raw_rwlock_t *rw)
 {
        __raw_spin_lock(&rw->slock);
        while (rw->lock != RW_LOCK_BIAS);
-       rw->lock == 0;
+       rw->lock = 0;
        __raw_spin_unlock(&rw->slock);
 }
 
@@ -93,7 +93,7 @@ static  inline void __raw_write_unlock(raw_rwlock_t *rw)
 {
        __raw_spin_lock(&rw->slock);
        while (rw->lock != RW_LOCK_BIAS);
-       rw->lock == RW_LOCK_BIAS;
+       rw->lock = RW_LOCK_BIAS;
        __raw_spin_unlock(&rw->slock);
 }
 
@@ -114,7 +114,7 @@ static  inline int __raw_write_trylock(raw_rwlock_t *rw)
        int ret = 0;
        __raw_spin_lock(&rw->slock);
        if (rw->lock == RW_LOCK_BIAS) {
-               rw->lock == 0;
+               rw->lock = 0;
                ret = 1;
        }
        __raw_spin_unlock(&rw->slock);