• Ard Biesheuvel's avatar
    efi: Use correct type for struct efi_memory_map::phys_map · 44511fb9
    Ard Biesheuvel authored
    We have been getting away with using a void* for the physical
    address of the UEFI memory map, since, even on 32-bit platforms
    with 64-bit physical addresses, no truncation takes place if the
    memory map has been allocated by the firmware (which only uses
    1:1 virtually addressable memory), which is usually the case.
    
    However, commit:
    
      0f96a99d ("efi: Add "efi_fake_mem" boot option")
    
    adds code that clones and modifies the UEFI memory map, and the
    clone may live above 4 GB on 32-bit platforms.
    
    This means our use of void* for struct efi_memory_map::phys_map has
    graduated from 'incorrect but working' to 'incorrect and
    broken', and we need to fix it.
    
    So redefine struct efi_memory_map::phys_map as phys_addr_t, and
    get rid of a bunch of casts that are now unneeded.
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Reviewed-by: default avatarMatt Fleming <matt@codeblueprint.co.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: izumi.taku@jp.fujitsu.com
    Cc: kamezawa.hiroyu@jp.fujitsu.com
    Cc: linux-efi@vger.kernel.org
    Cc: matt.fleming@intel.com
    Link: http://lkml.kernel.org/r/1445593697-1342-1-git-send-email-ard.biesheuvel@linaro.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    44511fb9
efi.c 25.6 KB