VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
author: Mark Rutland <mark.rutland@arm.com> 2018-06-21 13:13:11 +0100 committer: Ingo Molnar <mingo@kernel.org> 2018-06-21 14:25:21 +0200 commit: 00b808ab79ead372daf1a0682d1ef271599c0b55 parent: 0ae1d994020d75ac065fd42ac4cbf5ac6ce9b255
Commit Summary:
atomics/generic: Define atomic64_fetch_add_unless()
Diffstat:
1 file changed, 6 insertions, 7 deletions
diff --git a/lib/atomic64.c b/lib/atomic64.c
index 4230f4b8906c..1d91e31eceec 100644
--- a/lib/atomic64.c
+++ b/lib/atomic64.c
@@ -178,18 +178,18 @@ long long atomic64_xchg(atomic64_t *v, long long new)
 }
 EXPORT_SYMBOL(atomic64_xchg);
 
-bool atomic64_add_unless(atomic64_t *v, long long a, long long u)
+long long atomic64_fetch_add_unless(atomic64_t *v, long long a, long long u)
 {
 	unsigned long flags;
 	raw_spinlock_t *lock = lock_addr(v);
-	bool ret = false;
+	long long val;
 
 	raw_spin_lock_irqsave(lock, flags);
-	if (v->counter != u) {
+	val = v->counter;
+	if (val != u)
 		v->counter += a;
-		ret = true;
-	}
 	raw_spin_unlock_irqrestore(lock, flags);
-	return ret;
+
+	return val;
 }
-EXPORT_SYMBOL(atomic64_add_unless);
+EXPORT_SYMBOL(atomic64_fetch_add_unless);