Index: /trunk/src/VBox/VMM/VMMAll/PGMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PGMAll.cpp	(revision 27368)
+++ /trunk/src/VBox/VMM/VMMAll/PGMAll.cpp	(revision 27369)
@@ -1875,14 +1875,15 @@
             rc = PGM_BTH_PFN(MapCR3, pVCpu)(pVCpu, GCPhysCR3);
         }
+        /* Make sure we check for pending pgm pool syncs as we clear VMCPU_FF_PGM_SYNC_CR3 later on! */
+        if (    rc == VINF_PGM_SYNC_CR3
+            ||  (pVCpu->pgm.s.fSyncFlags & PGM_SYNC_CLEAR_PGM_POOL))
+        {
 #ifdef IN_RING3
-        if (rc == VINF_PGM_SYNC_CR3)
             rc = pgmPoolSyncCR3(pVCpu);
 #else
-        if (rc == VINF_PGM_SYNC_CR3)
-        {
             pVCpu->pgm.s.GCPhysCR3 = GCPhysCR3Old;
-            return rc;
-        }
+            return VINF_PGM_SYNC_CR3;
 #endif
+        }
         AssertRCReturn(rc, rc);
         AssertRCSuccessReturn(rc, VERR_INTERNAL_ERROR);
