diff options
Diffstat (limited to 'arch/arm/kvm/mmu.c')
| -rw-r--r-- | arch/arm/kvm/mmu.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c index bda27b6b1aa2..e9a5c0e0c115 100644 --- a/arch/arm/kvm/mmu.c +++ b/arch/arm/kvm/mmu.c @@ -1309,7 +1309,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,  	smp_rmb();  	pfn = gfn_to_pfn_prot(kvm, gfn, write_fault, &writable); -	if (is_error_pfn(pfn)) +	if (is_error_noslot_pfn(pfn))  		return -EFAULT;  	if (kvm_is_device_pfn(pfn)) { @@ -1714,7 +1714,8 @@ int kvm_mmu_init(void)  		 kern_hyp_va(PAGE_OFFSET), kern_hyp_va(~0UL));  	if (hyp_idmap_start >= kern_hyp_va(PAGE_OFFSET) && -	    hyp_idmap_start <  kern_hyp_va(~0UL)) { +	    hyp_idmap_start <  kern_hyp_va(~0UL) && +	    hyp_idmap_start != (unsigned long)__hyp_idmap_text_start) {  		/*  		 * The idmap page is intersecting with the VA space,  		 * it is not safe to continue further. @@ -1893,6 +1894,7 @@ void kvm_arch_memslots_updated(struct kvm *kvm, struct kvm_memslots *slots)  void kvm_arch_flush_shadow_all(struct kvm *kvm)  { +	kvm_free_stage2_pgd(kvm);  }  void kvm_arch_flush_shadow_memslot(struct kvm *kvm,  | 
