Index: /trunk/src/VBox/VMM/EM.cpp
===================================================================
--- /trunk/src/VBox/VMM/EM.cpp	(revision 19792)
+++ /trunk/src/VBox/VMM/EM.cpp	(revision 19793)
@@ -3612,5 +3612,5 @@
 VMMR3DECL(void) EMR3ReleaseOwnedLocks(PVM pVM)
 {
-    if (PDMCritSectIsOwner(&pVM->em.s.CritSectREM))
+    while (PDMCritSectIsOwner(&pVM->em.s.CritSectREM))
         PDMCritSectLeave(&pVM->em.s.CritSectREM);
 }
Index: /trunk/src/VBox/VMM/IOM.cpp
===================================================================
--- /trunk/src/VBox/VMM/IOM.cpp	(revision 19792)
+++ /trunk/src/VBox/VMM/IOM.cpp	(revision 19793)
@@ -1652,5 +1652,5 @@
 VMMR3DECL(void) IOMR3ReleaseOwnedLocks(PVM pVM)
 {
-    if (PDMCritSectIsOwner(&pVM->iom.s.EmtLock))
+    while (PDMCritSectIsOwner(&pVM->iom.s.EmtLock))
         PDMCritSectLeave(&pVM->iom.s.EmtLock);
 }
Index: /trunk/src/VBox/VMM/MMHyper.cpp
===================================================================
--- /trunk/src/VBox/VMM/MMHyper.cpp	(revision 19792)
+++ /trunk/src/VBox/VMM/MMHyper.cpp	(revision 19793)
@@ -1099,5 +1099,5 @@
     PMMHYPERHEAP pHeap = pVM->mm.s.CTX_SUFF(pHyperHeap);
 
-    if (PDMCritSectIsOwner(&pHeap->Lock))
+    while (pHeap && PDMCritSectIsOwner(&pHeap->Lock))
         PDMCritSectLeave(&pHeap->Lock);
 }
Index: /trunk/src/VBox/VMM/PDM.cpp
===================================================================
--- /trunk/src/VBox/VMM/PDM.cpp	(revision 19792)
+++ /trunk/src/VBox/VMM/PDM.cpp	(revision 19793)
@@ -1449,5 +1449,5 @@
 VMMR3DECL(void) PDMR3ReleaseOwnedLocks(PVM pVM)
 {
-    if (PDMCritSectIsOwner(&pVM->pdm.s.CritSect))
+    while (PDMCritSectIsOwner(&pVM->pdm.s.CritSect))
         PDMCritSectLeave(&pVM->pdm.s.CritSect);
 }
Index: /trunk/src/VBox/VMM/PGM.cpp
===================================================================
--- /trunk/src/VBox/VMM/PGM.cpp	(revision 19792)
+++ /trunk/src/VBox/VMM/PGM.cpp	(revision 19793)
@@ -4063,5 +4063,5 @@
 VMMR3DECL(void) PGMR3ReleaseOwnedLocks(PVM pVM)
 {
-    if (PDMCritSectIsOwner(&pVM->pgm.s.CritSect))
+    while (PDMCritSectIsOwner(&pVM->pgm.s.CritSect))
         PDMCritSectLeave(&pVM->pgm.s.CritSect);
 }
