• Gen Zhang's avatar
    efi/x86/Add missing error handling to old_memmap 1:1 mapping code · 4e78921b
    Gen Zhang authored
    The old_memmap flow in efi_call_phys_prolog() performs numerous memory
    allocations, and either does not check for failure at all, or it does
    but fails to propagate it back to the caller, which may end up calling
    into the firmware with an incomplete 1:1 mapping.
    
    So let's fix this by returning NULL from efi_call_phys_prolog() on
    memory allocation failures only, and by handling this condition in the
    caller. Also, clean up any half baked sets of page tables that we may
    have created before returning with a NULL return value.
    
    Note that any failure at this level will trigger a panic() two levels
    up, so none of this makes a huge difference, but it is a nice cleanup
    nonetheless.
    
    [ardb: update commit log, add efi_call_phys_epilog() call on error path]
    Signed-off-by: default avatarGen Zhang <blackgod016574@gmail.com>
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rob Bradford <robert.bradford@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190525112559.7917-2-ard.biesheuvel@linaro.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    4e78921b
efi_64.c 25.9 KB