On 32-bit ARM, I got a link failure in futex_init() when building with clang in some random configurations:
kernel/futex.o:(.text.fixup+0x5c): relocation truncated to fit: R_ARM_JUMP24 against `.init.text' As far as I can tell, the problem is that a branch is over 16MB apart in those configurations, but only if it branches back to the init text. Marking the futex_detect_cmpxchg() function as noinline and not __init avoids the problem for me. Signed-off-by: Arnd Bergmann <a...@arndb.de> --- kernel/futex.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/futex.c b/kernel/futex.c index c3b73b0311bc..dda77ed9f445 100644 --- a/kernel/futex.c +++ b/kernel/futex.c @@ -3849,7 +3849,7 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val, } #endif /* CONFIG_COMPAT_32BIT_TIME */ -static void __init futex_detect_cmpxchg(void) +static noinline void futex_detect_cmpxchg(void) { #ifndef CONFIG_HAVE_FUTEX_CMPXCHG u32 curval; -- 2.20.0