• A
    efi: Use 32-bit alignment for efi_guid_t · 494c704f
    Ard Biesheuvel 提交于
    The UEFI spec and EDK2 reference implementation both define EFI_GUID as
    struct { u32 a; u16; b; u16 c; u8 d[8]; }; and so the implied alignment
    is 32 bits not 8 bits like our guid_t. In some cases (i.e., on 32-bit ARM),
    this means that firmware services invoked by the kernel may assume that
    efi_guid_t* arguments are 32-bit aligned, and use memory accessors that
    do not tolerate misalignment. So let's set the minimum alignment to 32 bits.
    
    Note that the UEFI spec as well as some comments in the EDK2 code base
    suggest that EFI_GUID should be 64-bit aligned, but this appears to be
    a mistake, given that no code seems to exist that actually enforces that
    or relies on it.
    Reported-by: NHeinrich Schuchardt <xypron.glpk@gmx.de>
    Signed-off-by: NArd Biesheuvel <ard.biesheuvel@linaro.org>
    Reviewed-by: NLeif Lindholm <leif.lindholm@linaro.org>
    Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Cc: Alexander Graf <agraf@suse.de>
    Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Jeffrey Hugo <jhugo@codeaurora.org>
    Cc: Lee Jones <lee.jones@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190202094119.13230-5-ard.biesheuvel@linaro.orgSigned-off-by: NIngo Molnar <mingo@kernel.org>
    494c704f
efi.h 51.4 KB