From ea181b2e7a5913effcd6d3ea83c3647bfd62248d Mon Sep 17 00:00:00 2001 From: Marc Zyngier Date: Sun, 28 Oct 2012 11:52:57 +0000 Subject: [PATCH] --- yaml --- r: 372093 b: refs/heads/master c: b4034bde5f168f2383a54b4573e1e440dbc169cf h: refs/heads/master i: 372091: 8220869281b0d286b5cccb8166e688306cf4fbff v: v3 --- [refs] | 2 +- trunk/arch/arm/kvm/mmu.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 5084003bd407..7d2c50bccae7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 06e8c3b0f3210e5e7039fd2b5e3926b68df7f5d7 +refs/heads/master: b4034bde5f168f2383a54b4573e1e440dbc169cf diff --git a/trunk/arch/arm/kvm/mmu.c b/trunk/arch/arm/kvm/mmu.c index ead6b16eeb09..ec14269a791c 100644 --- a/trunk/arch/arm/kvm/mmu.c +++ b/trunk/arch/arm/kvm/mmu.c @@ -200,8 +200,13 @@ static int __create_hyp_mappings(void *from, void *to, unsigned long *pfn_base) unsigned long addr, next; int err = 0; - BUG_ON(start > end); - if (start < PAGE_OFFSET) + if (start >= end) + return -EINVAL; + /* Check for a valid kernel memory mapping */ + if (!pfn_base && (!virt_addr_valid(from) || !virt_addr_valid(to - 1))) + return -EINVAL; + /* Check for a valid kernel IO mapping */ + if (pfn_base && (!is_vmalloc_addr(from) || !is_vmalloc_addr(to - 1))) return -EINVAL; mutex_lock(&kvm_hyp_pgd_mutex);