diff options
Diffstat (limited to 'arch/arm/kvm')
-rw-r--r-- | arch/arm/kvm/mmu.c | 9 |
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); |