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

ARM: remove Thumb2 __builtin_thread_pointer workaround for Clang

Now that the minimum supported version of LLVM for building the kernel has
been bumped to 13.0.1, the conditional expression added to get_current()
by commit c1e42efacb9b ("ARM: 9151/1: Thumb2: avoid
__builtin_thread_pointer() on Clang") is always true, as the build will
fail during the configuration stage for older LLVM versions. Remove it,
effectively reverting the aforementioned change.

Link: https://lkml.kernel.org/r/20240125-bump-min-llvm-ver-to-13-0-1-v1-4-f5ff9bda41c5@kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Kees Cook <keescook@chromium.org>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: "Aneesh Kumar K.V (IBM)" <aneesh.kumar@kernel.org>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Borislav Petkov (AMD) <bp@alien8.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Conor Dooley <conor@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Walmsley <paul.walmsley@sifive.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Nathan Chancellor and committed by
Andrew Morton
19336376 22d3da07

+1 -7
+1 -7
arch/arm/include/asm/current.h
··· 18 18 { 19 19 struct task_struct *cur; 20 20 21 - #if __has_builtin(__builtin_thread_pointer) && \ 22 - defined(CONFIG_CURRENT_POINTER_IN_TPIDRURO) && \ 23 - !(defined(CONFIG_THUMB2_KERNEL) && \ 24 - defined(CONFIG_CC_IS_CLANG) && CONFIG_CLANG_VERSION < 130001) 21 + #if __has_builtin(__builtin_thread_pointer) && defined(CONFIG_CURRENT_POINTER_IN_TPIDRURO) 25 22 /* 26 23 * Use the __builtin helper when available - this results in better 27 24 * code, especially when using GCC in combination with the per-task 28 25 * stack protector, as the compiler will recognize that it needs to 29 26 * load the TLS register only once in every function. 30 - * 31 - * Clang < 13.0.1 gets this wrong for Thumb2 builds: 32 - * https://github.com/ClangBuiltLinux/linux/issues/1485 33 27 */ 34 28 cur = __builtin_thread_pointer(); 35 29 #elif defined(CONFIG_CURRENT_POINTER_IN_TPIDRURO) || defined(CONFIG_SMP)