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

MIPS: include: Mark __cmpxchg as __always_inline

Commit ac7c3e4ff401 ("compiler: enable CONFIG_OPTIMIZE_INLINING
forcibly") allows compiler to uninline functions marked as 'inline'.
In cace of cmpxchg this would cause to reference function
__cmpxchg_called_with_bad_pointer, which is a error case
for catching bugs and will not happen for correct code, if
__cmpxchg is inlined.

Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
[paul.burton@mips.com: s/__cmpxchd/__cmpxchg in subject]
Signed-off-by: Paul Burton <paul.burton@mips.com>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: linux-kernel@vger.kernel.org

authored by

Thomas Bogendoerfer and committed by
Paul Burton
88356d09 da0c9ea1

+3 -2
+3 -2
arch/mips/include/asm/cmpxchg.h
··· 153 153 extern unsigned long __cmpxchg_small(volatile void *ptr, unsigned long old, 154 154 unsigned long new, unsigned int size); 155 155 156 - static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, 157 - unsigned long new, unsigned int size) 156 + static __always_inline 157 + unsigned long __cmpxchg(volatile void *ptr, unsigned long old, 158 + unsigned long new, unsigned int size) 158 159 { 159 160 switch (size) { 160 161 case 1: