xtensa: fix futex_atomic_cmpxchg_inatomic

commit ca47480921 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: Ben Hutchings <ben@decadent.org.uk>
This commit is contained in:
Max Filippov 2018-01-05 14:27:58 -08:00 • committed by Ben Hutchings
commit 7d7437f5dc