lkml.org 
[lkml]   [2022]   [Aug]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 106/545] powerpc/64s: Disable stack variable initialisation for prom_init
    Date
    From: Michael Ellerman <mpe@ellerman.id.au>

    [ Upstream commit be640317a1d0b9cf42fedb2debc2887a7cfa38de ]

    With GCC 12 allmodconfig prom_init fails to build:

    Error: External symbol 'memset' referenced from prom_init.c
    make[2]: *** [arch/powerpc/kernel/Makefile:204: arch/powerpc/kernel/prom_init_check] Error 1

    The allmodconfig build enables KASAN, so all calls to memset in
    prom_init should be converted to __memset by the #ifdefs in
    asm/string.h, because prom_init must use the non-KASAN instrumented
    versions.

    The build failure happens because there's a call to memset that hasn't
    been caught by the pre-processor and converted to __memset. Typically
    that's because it's a memset generated by the compiler itself, and that
    is the case here.

    With GCC 12, allmodconfig enables CONFIG_INIT_STACK_ALL_PATTERN, which
    causes the compiler to emit memset calls to initialise on-stack
    variables with a pattern.

    Because prom_init is non-user-facing boot-time only code, as a
    workaround just disable stack variable initialisation to unbreak the
    build.

    Reported-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220718134418.354114-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    arch/powerpc/kernel/Makefile | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile
    index 376104c166fc..db2bdc4cec64 100644
    --- a/arch/powerpc/kernel/Makefile
    +++ b/arch/powerpc/kernel/Makefile
    @@ -20,6 +20,7 @@ CFLAGS_prom.o += $(DISABLE_LATENT_ENTROPY_PLUGIN)
    CFLAGS_prom_init.o += -fno-stack-protector
    CFLAGS_prom_init.o += -DDISABLE_BRANCH_PROFILING
    CFLAGS_prom_init.o += -ffreestanding
    +CFLAGS_prom_init.o += $(call cc-option, -ftrivial-auto-var-init=uninitialized)

    ifdef CONFIG_FUNCTION_TRACER
    # Do not trace early boot code
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-19 17:59    [W:2.134 / U:0.208 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site