[ASM:X64] ASSERT that interrupts are enabled, when returning to user mode

This commit is contained in:
Timo Kreuzer 2018-02-12 20:48:11 +01:00
parent ce5aa24c50
commit 8ec888487a
2 changed files with 14 additions and 0 deletions

View file

@ -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 */

View file

@ -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