• Mark Salter's avatar
    arm: KVM: fix possible misalignment of PGDs and bounce page · 5d4e08c4
    Mark Salter authored
    The kvm/mmu code shared by arm and arm64 uses kalloc() to allocate
    a bounce page (if hypervisor init code crosses page boundary) and
    hypervisor PGDs. The problem is that kalloc() does not guarantee
    the proper alignment. In the case of the bounce page, the page sized
    buffer allocated may also cross a page boundary negating the purpose
    and leading to a hang during kvm initialization. Likewise the PGDs
    allocated may not meet the minimum alignment requirements of the
    underlying MMU. This patch uses __get_free_page() to guarantee the
    worst case alignment needs of the bounce page and PGDs on both arm
    and arm64.
    
    Cc: <stable@vger.kernel.org> # 3.10+
    Signed-off-by: default avatarMark Salter <msalter@redhat.com>
    Acked-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    5d4e08c4
mmu.c 28.3 KB