• Ard Biesheuvel's avatar
    efi/libstub: arm64: Force Image reallocation if BSS was not reserved · 5b94046e
    Ard Biesheuvel authored
    Distro versions of GRUB replace the usual LoadImage/StartImage calls
    used to load the kernel image with some local code that fails to honor
    the allocation requirements described in the PE/COFF header, as it
    does not account for the image's BSS section at all: it fails to
    allocate space for it, and fails to zero initialize it.
    
    Since the EFI stub itself is allocated in the .init segment, which is
    in the middle of the image, its BSS section is not impacted by this,
    and the main consequence of this omission is that the BSS section may
    overlap with memory regions that are already used by the firmware.
    
    So let's warn about this condition, and force image reallocation to
    occur in this case, which works around the problem.
    
    Fixes: 82046702 ("efi/libstub/arm64: Replace 'preferred' offset with alignment check")
    Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Tested-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    5b94046e
arm64-stub.c 4.52 KB