• Ard Biesheuvel's avatar
    efi/esrt: Fix handling of early ESRT table mapping · 136d5d57
    Ard Biesheuvel authored
    As reported by Tyler, efi_esrt_init() will return without releasing the
    ESRT table header mapping if it encounters a table with an unexpected
    version. Replacing the 'return' with 'goto err_memunmap' would fix this
    particular occurrence, but, as it turns out, the code is rather peculiar
    to begin with:
    
     - it never uses the header mapping after memcpy()'ing out its contents,
     - it maps and unmaps the entire table without ever looking at the
       contents.
    
    So let's refactor this code to unmap the table header right after the
    memcpy() so we can get rid of the error handling path altogether, and
    drop the second mapping entirely.
    Reported-by: default avatarTyler Baicar <tbaicar@codeaurora.org>
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@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
    Link: http://lkml.kernel.org/r/20180312084500.10764-5-ard.biesheuvel@linaro.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    136d5d57
esrt.c 10.3 KB