• Joerg Roedel's avatar
    x86/boot/compressed/64: Disable red-zone usage · 6ba0efa4
    Joerg Roedel authored
    The x86-64 ABI defines a red-zone on the stack:
    
      The 128-byte area beyond the location pointed to by %rsp is considered
      to be reserved and shall not be modified by signal or interrupt
      handlers. Therefore, functions may use this area for temporary data
      that is not needed across function calls. In particular, leaf
      functions may use this area for their entire stack frame, rather than
      adjusting the stack pointer in the prologue and epilogue. This area is
      known as the red zone.
    
    This is not compatible with exception handling, because the IRET frame
    written by the hardware at the stack pointer and the functions to handle
    the exception will overwrite the temporary variables of the interrupted
    function, causing undefined behavior. So disable red-zones for the
    pre-decompression boot code.
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Link: https://lkml.kernel.org/r/20200907131613.12703-13-joro@8bytes.org
    6ba0efa4
Makefile 5.72 KB