arm/arm64: KVM: Fix and refactor unmap_range
authorChristoffer Dall <christoffer.dall@linaro.org>
Fri, 9 May 2014 21:31:31 +0000 (23:31 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 29 Jun 2015 19:25:37 +0000 (12:25 -0700)
commit19a2d45ac657ab9bee3e252a84d875a41ec49142
treef5450bdcd4b35c78b4b04889205c1627a54ebfd2
parente42ec4ae3b532218a9166a7bcc11455e35dda5fd
arm/arm64: KVM: Fix and refactor unmap_range

commit 4f853a714bf16338ff5261128e6c7ae2569e9505 upstream.

unmap_range() was utterly broken, to quote Marc, and broke in all sorts
of situations.  It was also quite complicated to follow and didn't
follow the usual scheme of having a separate iterating function for each
level of page tables.

Address this by refactoring the code and introduce a pgd_clear()
function.

Reviewed-by: Jungseok Lee <jays.lee@samsung.com>
Reviewed-by: Mario Smarduch <m.smarduch@samsung.com>
Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/arm/include/asm/kvm_mmu.h
arch/arm/kvm/mmu.c
arch/arm64/include/asm/kvm_mmu.h