Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

futex: Fix additional regressions

Naresh reported another architecture that was broken by the same typo that
was already fixed for three architectures: mips also refers to the
futex_atomic_op_inuser_local() function by the wrong name and runs into a
missing closing '}' as well.

Going through the source tree the same typo was found in the documentation
as well as in the xtensa code, both of which ended up escaping the
regression testing so far. In the case of xtensa, it appears that the
broken code path is only used when building for platforms that are not
supported by the default gcc configuration, so they are impossible to test
for with default setups.

After going through these more carefully and fixing up the typos, all
architectures have been build-tested again to ensure that this is now
complete.

Fixes: 4e0d84634445 ("futex: Fix sparc32/m68k/nds32 build regression")
Fixes: 3f2bedabb62c ("futex: Ensure futex_atomic_cmpxchg_inatomic() is present")
Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20211203080823.2938839-1-arnd@kernel.org

authored by

Arnd Bergmann and committed by
Thomas Gleixner
0f09c274 77993b59

+5 -5
+3 -3
arch/mips/include/asm/futex.h
··· 86 86 : "memory"); \ 87 87 } else { \ 88 88 /* fallback for non-SMP */ \ 89 - ret = arch_futex_atomic_op_inuser_local(op, oparg, oval,\ 90 - uaddr); \ 91 - } 89 + ret = futex_atomic_op_inuser_local(op, oparg, oval, uaddr); \ 90 + } \ 91 + } 92 92 93 93 static inline int 94 94 arch_futex_atomic_op_inuser(int op, int oparg, int *oval, u32 __user *uaddr)
+1 -1
arch/xtensa/include/asm/futex.h
··· 109 109 110 110 return ret; 111 111 #else 112 - return arch_futex_atomic_op_inuser_local(op, oparg, oval, uaddr); 112 + return futex_atomic_op_inuser_local(op, oparg, oval, uaddr); 113 113 #endif 114 114 } 115 115
+1 -1
include/asm-generic/futex.h
··· 21 21 #endif 22 22 23 23 /** 24 - * arch_futex_atomic_op_inuser_local() - Atomic arithmetic operation with constant 24 + * futex_atomic_op_inuser_local() - Atomic arithmetic operation with constant 25 25 * argument and comparison of the previous 26 26 * futex value with another constant. 27 27 *