• Thomas Gleixner's avatar
    x86/boot/32: Disable stackprotector and tracing for mk_early_pgtbl_32() · 242db758
    Thomas Gleixner authored
    Stackprotector cannot work before paging is enabled. The read from the per
    CPU variable __stack_chk_guard is always accessing the virtual address
    either directly on UP or via FS on SMP. In physical address mode this
    results in an access to memory above 3GB.
    
    So this works by chance as the hardware returns the same value when there
    is no RAM at this physical address. When there is RAM populated above 3G
    then the read is by chance the same as nothing changes that memory during
    the very early boot stage.
    
    Stop relying on pure luck and disable the stack protector for the only C
    function which is called during early boot before paging is enabled.
    
    Remove function tracing from the whole source file as there is no way to
    trace this at all, but in case of CONFIG_DYNAMIC_FTRACE=n
    mk_early_pgtbl_32() would access global function tracer variables in
    physical address mode which again might work by chance.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
    Link: https://lore.kernel.org/r/20231002115902.156063939@linutronix.de
    242db758
Makefile 4.83 KB