diff options
author | Andrey Konovalov <andrey.konovalov@linaro.org> | 2014-11-07 11:05:40 +0300 |
---|---|---|
committer | Andrey Konovalov <andrey.konovalov@linaro.org> | 2014-11-07 11:05:40 +0300 |
commit | 2b07609efb827628d8e21afc43cb2be19e018c98 (patch) | |
tree | 43c15ca051870bbfa1d2655211395a3d604bc6a9 /arch/arm64/include/asm/futex.h | |
parent | d2c9148455187562d5bf8f79e3d81e25680c3ecf (diff) | |
parent | 0645719cb17f6aafba10fb7b8bd30b665d84bf27 (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.h | 3 |
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" |