aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/include/asm/atomic_lse.h
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2015-05-29 14:44:06 +0100
committerWill Deacon <will.deacon@arm.com>2015-07-27 15:28:54 +0100
commitdb26217e6f54647b137a0fe1f2ab346de67d6f3e (patch)
tree5c839d3429de197f511161be339bcdacb786d471 /arch/arm64/include/asm/atomic_lse.h
parentarm64: atomics: implement atomic{,64}_cmpxchg using cmpxchg (diff)
downloadlinux-dev-db26217e6f54647b137a0fe1f2ab346de67d6f3e.tar.xz
linux-dev-db26217e6f54647b137a0fe1f2ab346de67d6f3e.zip
arm64: atomic64_dec_if_positive: fix incorrect branch condition
If we attempt to atomic64_dec_if_positive on INT_MIN, we will underflow and incorrectly decide that the original parameter was positive. This patches fixes the broken condition code so that we handle this corner case correctly. Reviewed-by: Steve Capper <steve.capper@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/atomic_lse.h')
-rw-r--r--arch/arm64/include/asm/atomic_lse.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/atomic_lse.h b/arch/arm64/include/asm/atomic_lse.h
index 30e5cbcfc707..f873bf61e17b 100644
--- a/arch/arm64/include/asm/atomic_lse.h
+++ b/arch/arm64/include/asm/atomic_lse.h
@@ -291,7 +291,7 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
/* LSE atomics */
"1: ldr x30, %[v]\n"
" subs %[ret], x30, #1\n"
- " b.mi 2f\n"
+ " b.lt 2f\n"
" casal x30, %[ret], %[v]\n"
" sub x30, x30, #1\n"
" sub x30, x30, %[ret]\n"