Index: /trunk/include/VBox/vmm/hm.h
===================================================================
--- /trunk/include/VBox/vmm/hm.h	(revision 54717)
+++ /trunk/include/VBox/vmm/hm.h	(revision 54718)
@@ -182,25 +182,13 @@
 # define HM_DISABLE_PREEMPT_IF_NEEDED() \
     RTTHREADPREEMPTSTATE PreemptStateInternal = RTTHREADPREEMPTSTATE_INITIALIZER; \
-    bool fPreemptDisabledInternal = false; \
-    if (RTThreadPreemptIsEnabled(NIL_RTTHREAD)) \
-    { \
-        Assert(VMMR0ThreadCtxHooksAreRegistered(pVCpu)); \
-        RTThreadPreemptDisable(&PreemptStateInternal); \
-        fPreemptDisabledInternal = true; \
-    } else do { } while (0)
-
-# define HM_RESTORE_PREEMPT_IF_NEEDED() \
-    do \
-    { \
-        if (fPreemptDisabledInternal) \
-            RTThreadPreemptRestore(&PreemptStateInternal); \
-    } while (0)
+    Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD) || VMMR0ThreadCtxHooksAreRegistered(pVCpu)); \
+    RTThreadPreemptDisable(&PreemptStateInternal);
 #else
 # define HM_DISABLE_PREEMPT_IF_NEEDED() \
     RTTHREADPREEMPTSTATE PreemptStateInternal = RTTHREADPREEMPTSTATE_INITIALIZER; \
     RTThreadPreemptDisable(&PreemptStateInternal);
-
+#endif /* VBOX_STRICT */
 # define HM_RESTORE_PREEMPT_IF_NEEDED() do { RTThreadPreemptRestore(&PreemptStateInternal); } while(0)
-#endif /* VBOX_STRICT */
+
 
 VMMR0_INT_DECL(int)             HMR0SetupVM(PVM pVM);
Index: /trunk/include/VBox/vmm/vmm.h
===================================================================
--- /trunk/include/VBox/vmm/vmm.h	(revision 54717)
+++ /trunk/include/VBox/vmm/vmm.h	(revision 54718)
@@ -513,5 +513,5 @@
 VMMR0DECL(bool)      VMMR0ThreadCtxHooksAreCreated(PVMCPU pVCpu);
 VMMR0DECL(int)       VMMR0ThreadCtxHooksRegister(PVMCPU pVCpu, PFNRTTHREADCTXHOOK pfnHook);
-VMMR0DECL(int)       VMMR0ThreadCtxHooksDeregister(PVMCPU pVCpu);
+VMMR0DECL(void)      VMMR0ThreadCtxHooksDeregister(PVMCPU pVCpu);
 VMMR0DECL(bool)      VMMR0ThreadCtxHooksAreRegistered(PVMCPU pVCpu);
 
Index: /trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/VMMR0.cpp	(revision 54717)
+++ /trunk/src/VBox/VMM/VMMR0/VMMR0.cpp	(revision 54718)
@@ -503,10 +503,9 @@
  * Deregisters the thread-context hook for this VCPU.
  *
- * @returns VBox status code.
  * @param   pVCpu       Pointer to the VMCPU.
  *
  * @thread  EMT(pVCpu)
  */
-VMMR0DECL(int) VMMR0ThreadCtxHooksDeregister(PVMCPU pVCpu)
+VMMR0DECL(void) VMMR0ThreadCtxHooksDeregister(PVMCPU pVCpu)
 {
     /* Clear the VCPU <-> host CPU mapping as we've left HM context. See @bugref{7726} comment #19. */
@@ -517,7 +516,6 @@
         Assert(!RTThreadPreemptIsEnabled(NIL_RTTHREAD));
         int rc = RTThreadCtxHooksDeregister(pVCpu->vmm.s.hR0ThreadCtx);
-        AssertRCReturn(rc, rc);
-    }
-    return VINF_SUCCESS;
+        AssertRC(rc);
+    }
 }
 
