[PATCH] ARM: Thumb2: avoid __builtin_thread_pointer() on Clang

Kees Cook keescook at chromium.org
Thu Oct 28 09:52:30 PDT 2021


On Thu, Oct 28, 2021 at 10:35:27AM +0200, Ard Biesheuvel wrote:
> If available, we use the __builtin_thread_pointer() helper to get the
> value of the TLS register, to help the compiler understand that it
> doesn't need to reload it every time we access 'current'.
> 
> Unfortunately, Clang fails to emit the MRC system register read
> directly when building for Thumb2, and instead, it issues a call to the
> __aeabi_read_tp helper, which the kernel does not provide, and so this
> result in link failures at build time.
> 
> So create a special case for this, and emit the MRC directly using an
> asm() block, just like we do when the helper is not available to begin
> with.
> 
> Link: https://github.com/ClangBuiltLinux/linux/issues/1485
> Signed-off-by: Ard Biesheuvel <ardb at kernel.org>

Reviewed-by: Kees Cook <keescook at chromium.org>

-- 
Kees Cook



More information about the linux-arm-kernel mailing list