Index: /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 65274)
+++ /trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp	(revision 65275)
@@ -8409,5 +8409,4 @@
     else
     {
-        VMMRZCallRing3Enable(pVCpu);
         Assert(rcStrict == VINF_EM_RESCHEDULE_REM || RT_FAILURE_NP(rcStrict));
         return rcStrict;
@@ -8553,4 +8552,5 @@
             AssertMsg(rcStrict == VINF_EM_RESCHEDULE_REM,
                       ("hmR0VmxLoadGuestStateOptimal: hmR0VmxLoadGuestState failed! rc=%Rrc\n", VBOXSTRICTRC_VAL(rcStrict)));
+            Assert(!VMMRZCallRing3IsEnabled(pVCpu));
             return rcStrict;
         }
@@ -8711,7 +8711,12 @@
         if (!RTThreadPreemptIsPending(NIL_RTTHREAD))
         {
-            /* We've injected any pending events. This is really the point of no return (to ring-3). */
             pVCpu->hm.s.Event.fPending = false;
 
+            /*
+             * We've injected any pending events. This is really the point of no return (to ring-3).
+             *
+             * Note! The caller expects to continue with interrupts & longjmps disabled on successful
+             * returns from this function, so don't enable them here.
+             */
             return VINF_SUCCESS;
         }
