diff --git a/ntoskrnl/ke/amd64/trap.S b/ntoskrnl/ke/amd64/trap.S index 3bcaa1684bf..75707e1d72d 100644 --- a/ntoskrnl/ke/amd64/trap.S +++ b/ntoskrnl/ke/amd64/trap.S @@ -786,6 +786,11 @@ PUBLIC KiSystemCallEntry64 #if DBG /* Restore rbp */ mov rbp, [rsp + SYSCALL_ALLOCATION + KTRAP_FRAME_Rbp] + + test dword ptr [rsp + MAX_SYSCALL_PARAM_SIZE + KTRAP_FRAME_EFlags], HEX(200) + jnz IntsEnabled + int 3 +IntsEnabled: #endif /* Disable interrupts for return */ diff --git a/sdk/include/asm/trapamd64.inc b/sdk/include/asm/trapamd64.inc index 88a8d182cc2..74209493d90 100644 --- a/sdk/include/asm/trapamd64.inc +++ b/sdk/include/asm/trapamd64.inc @@ -142,6 +142,7 @@ ENDM */ MACRO(ExitTrap, Flags) LOCAL kernel_mode_return + LOCAL IntsEnabled #if DBG /* Check previous irql */ @@ -177,6 +178,14 @@ MACRO(ExitTrap, Flags) endif +#if DBG + /*Make sure interrupts are enabled */ + test dword ptr [rbp + KTRAP_FRAME_EFlags], HEX(200) + jnz IntsEnabled + int HEX(2c) +IntsEnabled: +#endif + /* Swap gs to user mode */ swapgs