This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] [PATCH] direct_remap_pfn_range vm_flags fix

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] direct_remap_pfn_range vm_flags fix
From: Chris Wright <chrisw@xxxxxxxxxxxx>
Date: Wed, 8 Feb 2006 00:28:47 -0800
Delivery-date: Wed, 08 Feb 2006 08:32:51 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/
direct_remap_pfn_range() does not properly mark vma with VM_PFNMAP.
This triggers improper reference counting on what rmap thought was
a normal page, and a subsequent BUG() such as:

Eeek! page_mapcount(page) went negative! (-1)
  page->flags = 414
  page->count = 1
  page->mapping = 00000000
------------[ cut here ]------------
kernel BUG at 

Signed-off-by: Chris Wright <chrisw@xxxxxxxxxxxx>

diff -r 859c8d66b203 linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c
--- a/linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c   Tue Feb  7 20:46:13 2006
+++ b/linux-2.6-xen-sparse/arch/i386/mm/ioremap-xen.c   Tue Feb  7 23:46:21 2006
@@ -120,7 +120,7 @@
                           domid_t  domid)
        /* Same as remap_pfn_range(). */
-       vma->vm_flags |= VM_IO | VM_RESERVED;
+       vma->vm_flags |= VM_IO | VM_RESERVED | VM_PFNMAP;
        return __direct_remap_pfn_range(
                vma->vm_mm, address, mfn, size, prot, domid);

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>