From: kfraser@localhost.localdomain Date: Mon, 14 Aug 2006 15:35:49 +0000 (+0100) Subject: [LINUX] Mark /dev/mem regions as VM_PFNMAP. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15710^2~119 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=4d6a4b8c4d029aa7fb179b31c219cefdb527ec1c;p=xen.git [LINUX] Mark /dev/mem regions as VM_PFNMAP. Signed-off-by: Keir Fraser --- diff --git a/linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c b/linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c index 775e0ef22d..cb024992c3 100644 --- a/linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c +++ b/linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c @@ -121,7 +121,7 @@ int direct_remap_pfn_range(struct vm_area_struct *vma, domid_t domid) { /* Same as remap_pfn_range(). */ - vma->vm_flags |= VM_IO | VM_RESERVED; + vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP; if (domid == DOMID_SELF) return -EINVAL; diff --git a/linux-2.6-xen-sparse/mm/memory.c b/linux-2.6-xen-sparse/mm/memory.c index 827a0a37a4..1a63339203 100644 --- a/linux-2.6-xen-sparse/mm/memory.c +++ b/linux-2.6-xen-sparse/mm/memory.c @@ -390,7 +390,7 @@ struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, pte_ if (vma->vm_flags & VM_PFNMAP) { unsigned long off = (addr - vma->vm_start) >> PAGE_SHIFT; - if (pfn == vma->vm_pgoff + off) + if ((pfn == vma->vm_pgoff + off) || !pfn_valid(pfn)) return NULL; if (!is_cow_mapping(vma->vm_flags)) return NULL; @@ -405,8 +405,7 @@ struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr, pte_ * Remove this test eventually! */ if (unlikely(!pfn_valid(pfn))) { - if (!(vma->vm_flags & VM_RESERVED)) - print_bad_pte(vma, pte, addr); + print_bad_pte(vma, pte, addr); return NULL; }