x86/mm: Don't ASSERT() for a valid mfn on paged p2m entries in guest_physmap_ad
authorAndres Lagar-Cavilla <andres@lagarcavilla.org>
Thu, 19 Jan 2012 10:42:42 +0000 (10:42 +0000)
committerAndres Lagar-Cavilla <andres@lagarcavilla.org>
Thu, 19 Jan 2012 10:42:42 +0000 (10:42 +0000)
Signed-off-by: Adin Scannell <adin@scannell.ca>
Signed-off-by: Andres Lagar-Cavilla <andres@lagarcavilla.org>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Tim Deegan <tim@xen.org>
xen/arch/x86/mm/p2m.c

index 91851bb883800c5427074602268001e456a2497d..4a0ca8bb7395c8c29e1bac7be0054b20f59c61e7 100644 (file)
@@ -489,7 +489,7 @@ guest_physmap_add_entry(struct domain *d, unsigned long gfn,
             
             return -EINVAL;
         }
-        else if ( p2m_is_ram(ot) )
+        else if ( p2m_is_ram(ot) && !p2m_is_paged(ot) )
         {
             ASSERT(mfn_valid(omfn));
             set_gpfn_from_mfn(mfn_x(omfn), INVALID_M2P_ENTRY);
@@ -514,7 +514,7 @@ guest_physmap_add_entry(struct domain *d, unsigned long gfn,
             P2M_DEBUG("aliased! mfn=%#lx, old gfn=%#lx, new gfn=%#lx\n",
                       mfn + i, ogfn, gfn + i);
             omfn = p2m->get_entry(p2m, ogfn, &ot, &a, p2m_query, NULL);
-            if ( p2m_is_ram(ot) )
+            if ( p2m_is_ram(ot) && !p2m_is_paged(ot) )
             {
                 ASSERT(mfn_valid(omfn));
                 P2M_DEBUG("old gfn=%#lx -> mfn %#lx\n",