powerpc: Fix data-corrupting bug in __futex_atomic_op
authorPaul Mackerras <paulus@samba.org>
Mon, 13 Apr 2009 14:09:09 +0000 (14:09 +0000)
committerPaul Mackerras <paulus@samba.org>
Wed, 15 Apr 2009 05:23:53 +0000 (15:23 +1000)
commit306a82881b14d950d59e0b59a55093a07d82aa9a
tree73add71069ebf9572f898c0cc9ea6b889f1a7905
parentc58dc575f3c8bdc69fb868ec51e1c80ee7cae5e7
powerpc: Fix data-corrupting bug in __futex_atomic_op

Richard Henderson pointed out that the powerpc __futex_atomic_op has a
bug: it will write the wrong value if the stwcx. fails and it has to
retry the lwarx/stwcx. loop, since 'oparg' will have been overwritten
by the result from the first time around the loop.  This happens
because it uses the same register for 'oparg' (an input) as it uses
for the result.

This fixes it by using separate registers for 'oparg' and 'ret'.

Cc: stable@kernel.org
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/include/asm/futex.h