xtensa: fix futex_atomic_cmpxchg_inatomic
authorMax Filippov <jcmvbkbc@gmail.com>
Fri, 5 Jan 2018 22:27:58 +0000 (14:27 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 17 Feb 2018 12:21:19 +0000 (13:21 +0100)
commit2d4e295284a9614726cf02b3da1bb2591ec60770
tree9aaf737678b85c4517e94f03291101e43df09e15
parent71611b37cca4982da64d1807ab54749826628805
xtensa: fix futex_atomic_cmpxchg_inatomic

commit ca47480921587ae30417dd234a9f79af188e3666 upstream.

Return 0 if the operation was successful, not the userspace memory
value. Check that userspace value equals passed oldval, not itself.
Don't update *uval if the value wasn't read from userspace memory.

This fixes process hang due to infinite loop in futex_lock_pi.
It also fixes a bunch of glibc tests nptl/tst-mutexpi*.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/xtensa/include/asm/futex.h