summaryrefslogtreecommitdiff
path: root/arch/arm64/include/asm/futex.h
diff options
context:
space:
mode:
authorAndrey Konovalov <andrey.konovalov@linaro.org>2014-11-07 11:05:40 +0300
committerAndrey Konovalov <andrey.konovalov@linaro.org>2014-11-07 11:05:40 +0300
commit2b07609efb827628d8e21afc43cb2be19e018c98 (patch)
tree43c15ca051870bbfa1d2655211395a3d604bc6a9 /arch/arm64/include/asm/futex.h
parentd2c9148455187562d5bf8f79e3d81e25680c3ecf (diff)
parent0645719cb17f6aafba10fb7b8bd30b665d84bf27 (diff)
Merge branch 'tracking-llvm' into merge-linux-linaro
Diffstat (limited to 'arch/arm64/include/asm/futex.h')
-rw-r--r--arch/arm64/include/asm/futex.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/futex.h b/arch/arm64/include/asm/futex.h
index 5f750dc96e0f..9e5ed17447ca 100644
--- a/arch/arm64/include/asm/futex.h
+++ b/arch/arm64/include/asm/futex.h
@@ -108,7 +108,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
int ret = 0;
u32 val, tmp;
- if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
+ /* compiler may optimize uaddr to xzr if all uses are 0 which fails */
+ if (uaddr == 0 || !access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
return -EFAULT;
asm volatile("// futex_atomic_cmpxchg_inatomic\n"