浏览代码

lib: Fix atomic64_add_unless return value convention

atomic64_add_unless must return 1 if it perfomed the add and 0 otherwise.
The generic implementation did the opposite thing.

Reported-by: H. Peter Anvin <hpa@zytor.com>
Confirmed-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Luca Barbieri <luca@luca-barbieri.com>
LKML-Reference: <1267469749-11878-4-git-send-email-luca@luca-barbieri.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Luca Barbieri 15 年之前
父节点
当前提交
97577896f6
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      lib/atomic64.c

+ 2 - 2
lib/atomic64.c

@@ -162,12 +162,12 @@ int atomic64_add_unless(atomic64_t *v, long long a, long long u)
 {
 {
 	unsigned long flags;
 	unsigned long flags;
 	spinlock_t *lock = lock_addr(v);
 	spinlock_t *lock = lock_addr(v);
-	int ret = 1;
+	int ret = 0;
 
 
 	spin_lock_irqsave(lock, flags);
 	spin_lock_irqsave(lock, flags);
 	if (v->counter != u) {
 	if (v->counter != u) {
 		v->counter += a;
 		v->counter += a;
-		ret = 0;
+		ret = 1;
 	}
 	}
 	spin_unlock_irqrestore(lock, flags);
 	spin_unlock_irqrestore(lock, flags);
 	return ret;
 	return ret;