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>
Fri, 16 Feb 2018 19:09:47 +0000 (20:09 +0100)
commit1c11f153eb35260b3baab5996d7aa9e974dbb5dd
tree9e763f023b910eb956e25e5ffe776d41383d791b
parent4bd9d85ab3db74527d7db46874a93459e6c0cee2
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