Re: [PATCH] x86/stackprotector: fix build failure with CONFIG_STACKPROTECTOR=n
From: Ard Biesheuvel
Date: Fri Dec 06 2024 - 08:19:22 EST
On Fri, 6 Dec 2024 at 13:32, Oleg Nesterov <oleg@xxxxxxxxxx> wrote:
>
> Add the necessary '#ifdef CONFIG_STACKPROTECTOR' into
> arch/x86/kernel/vmlinux.lds.S
>
> Fixes: 577c134d311b ("x86/stackprotector: Work around strict Clang TLS symbol requirements")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Oleg Nesterov <oleg@xxxxxxxxxx>
> ---
> arch/x86/kernel/vmlinux.lds.S | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
> index fab3ac9a4574..2ff48645bab9 100644
> --- a/arch/x86/kernel/vmlinux.lds.S
> +++ b/arch/x86/kernel/vmlinux.lds.S
> @@ -472,8 +472,10 @@ SECTIONS
> . = ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE),
> "kernel image bigger than KERNEL_IMAGE_SIZE");
>
> +#ifdef CONFIG_STACKPROTECTOR
> /* needed for Clang - see arch/x86/entry/entry.S */
> PROVIDE(__ref_stack_chk_guard = __stack_chk_guard);
> +#endif
>
> #ifdef CONFIG_X86_64
> /*
This shouldn't be necessary - PROVIDE() is only evaluated if a
reference exists to the symbol it defines.
Also, I'm failing to reproduce this. Could you share your .config,
please, and the error that you get during the build?