• Ard Biesheuvel's avatar
    efi/memattr: Don't bail on zero VA if it equals the region's PA · 5de0fef0
    Ard Biesheuvel authored
    The EFI memory attributes code cross-references the EFI memory map with
    the more granular EFI memory attributes table to ensure that they are in
    sync before applying the strict permissions to the regions it describes.
    
    Since we always install virtual mappings for the EFI runtime regions to
    which these strict permissions apply, we currently perform a sanity check
    on the EFI memory descriptor, and ensure that the EFI_MEMORY_RUNTIME bit
    is set, and that the virtual address has been assigned.
    
    However, in cases where a runtime region exists at physical address 0x0,
    and the virtual mapping equals the physical mapping, e.g., when running
    in mixed mode on x86, we encounter a memory descriptor with the runtime
    attribute and virtual address 0x0, and incorrectly draw the conclusion
    that a runtime region exists for which no virtual mapping was installed,
    and give up altogether. The consequence of this is that firmware mappings
    retain their read-write-execute permissions, making the system more
    vulnerable to attacks.
    
    So let's only bail if the virtual address of 0x0 has been assigned to a
    physical region that does not reside at address 0x0.
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: default avatarSai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    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: Heinrich Schuchardt <xypron.glpk@gmx.de>
    Cc: Jeffrey Hugo <jhugo@codeaurora.org>
    Cc: Lee Jones <lee.jones@linaro.org>
    Cc: Leif Lindholm <leif.lindholm@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: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Fixes: 10f0d2f5 ("efi: Implement generic support for the Memory ...")
    Link: http://lkml.kernel.org/r/20190202094119.13230-4-ard.biesheuvel@linaro.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    5de0fef0
memattr.c 4.92 KB