x86/mm: Make sharing ASSERT check more accurate
authorAndres Lagar-Cavilla <andres@lagarcavilla.org>
Thu, 2 Feb 2012 12:22:34 +0000 (12:22 +0000)
committerAndres Lagar-Cavilla <andres@lagarcavilla.org>
Thu, 2 Feb 2012 12:22:34 +0000 (12:22 +0000)
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Signed-off-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
xen/arch/x86/mm/mem_sharing.c

index 7b089a0a64ebaa8231d06fcc12737a551eff6a97..539c35b6f8f049543ab243733925076deb423356 100644 (file)
@@ -197,7 +197,10 @@ static struct page_info* mem_sharing_lookup(unsigned long mfn)
         struct page_info* page = mfn_to_page(_mfn(mfn));
         if ( page_get_owner(page) == dom_cow )
         {
-            ASSERT(page->u.inuse.type_info & PGT_type_mask); 
+            /* Count has to be at least two, because we're called
+             * with the mfn locked (1) and this is supposed to be 
+             * a shared page (1). */
+            ASSERT((page->u.inuse.type_info & PGT_count_mask) >= 2); 
             ASSERT(get_gpfn_from_mfn(mfn) == SHARED_M2P_ENTRY); 
             return page;
         }