aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kvm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kvm')
-rw-r--r--arch/arm/kvm/mmu.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
index ead6b16eeb09..ec14269a791c 100644
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -200,8 +200,13 @@ static int __create_hyp_mappings(void *from, void *to, unsigned long *pfn_base)
200 unsigned long addr, next; 200 unsigned long addr, next;
201 int err = 0; 201 int err = 0;
202 202
203 BUG_ON(start > end); 203 if (start >= end)
204 if (start < PAGE_OFFSET) 204 return -EINVAL;
205 /* Check for a valid kernel memory mapping */
206 if (!pfn_base && (!virt_addr_valid(from) || !virt_addr_valid(to - 1)))
207 return -EINVAL;
208 /* Check for a valid kernel IO mapping */
209 if (pfn_base && (!is_vmalloc_addr(from) || !is_vmalloc_addr(to - 1)))
205 return -EINVAL; 210 return -EINVAL;
206 211
207 mutex_lock(&kvm_hyp_pgd_mutex); 212 mutex_lock(&kvm_hyp_pgd_mutex);