diff options
author | Will Deacon <will.deacon@arm.com> | 2019-04-10 12:49:11 +0200 |
---|---|---|
committer | Will Deacon <will.deacon@arm.com> | 2019-04-26 14:57:49 +0200 |
commit | 8e4e0ac02b449297b86498ac24db5786ddd9f647 (patch) | |
tree | fb89e32a00cffd6f64c652571bd51aa783472c4a /arch/arm64/include/asm/futex.h | |
parent | arm64: futex: Bound number of LDXR/STXR loops in FUTEX_WAKE_OP (diff) | |
download | linux-8e4e0ac02b449297b86498ac24db5786ddd9f647.tar.xz linux-8e4e0ac02b449297b86498ac24db5786ddd9f647.zip |
arm64: futex: Avoid copying out uninitialised stack in failed cmpxchg()
Returning an error code from futex_atomic_cmpxchg_inatomic() indicates
that the caller should not make any use of *uval, and should instead act
upon on the value of the error code. Although this is implemented
correctly in our futex code, we needlessly copy uninitialised stack to
*uval in the error case, which can easily be avoided.
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/include/asm/futex.h')
-rw-r--r-- | arch/arm64/include/asm/futex.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/futex.h b/arch/arm64/include/asm/futex.h index 2d78ea6932b7..bdb3c05070a2 100644 --- a/arch/arm64/include/asm/futex.h +++ b/arch/arm64/include/asm/futex.h @@ -134,7 +134,9 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *_uaddr, : "memory"); uaccess_disable(); - *uval = val; + if (!ret) + *uval = val; + return ret; } |