• M
    ARM: KVM: fix address validation for HYP mappings · b4034bde
    Marc Zyngier 提交于
    __create_hyp_mappings() performs some kind of address validation before
    creating the mapping, by verifying that the start address is above
    PAGE_OFFSET.
    
    This check is not completely correct for kernel memory (the upper
    boundary has to be checked as well so we do not end up with highmem
    pages), and wrong for IO mappings (the mapping must exist in the vmalloc
    region).
    
    Fix this by using the proper predicates (virt_addr_valid and
    is_vmalloc_addr), which also work correctly on ARM64 (where the vmalloc
    region is below PAGE_OFFSET).
    
    Also change the BUG_ON() into a less agressive error return.
    Signed-off-by: NMarc Zyngier <marc.zyngier@arm.com>
    b4034bde
mmu.c 18.9 KB