https://git.reactos.org/?p=reactos.git;a=commitdiff;h=44c6df4b2769b2b2d7aa62b589625e1a5b87338d

commit 44c6df4b2769b2b2d7aa62b589625e1a5b87338d
Author:     Hervé Poussineau <[email protected]>
AuthorDate: Tue Nov 17 14:22:27 2020 +0100
Commit:     Hervé Poussineau <[email protected]>
CommitDate: Tue Nov 17 14:23:36 2020 +0100

    [NTOS:KD] Correctly define previous mode when entering KDBG (addendum to 
0c76bbfe98d8dae26749670cba355136413ba3ce)
---
 ntoskrnl/kd/kdio.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/ntoskrnl/kd/kdio.c b/ntoskrnl/kd/kdio.c
index 22842942596..50f011c7f02 100644
--- a/ntoskrnl/kd/kdio.c
+++ b/ntoskrnl/kd/kdio.c
@@ -56,6 +56,7 @@ static ULONG KdbgNextApiNumber = DbgKdContinueApi;
 static CONTEXT KdbgContext;
 static EXCEPTION_RECORD64 KdbgExceptionRecord;
 static BOOLEAN KdbgFirstChanceException;
+static KPROCESSOR_MODE KdbgPreviousMode;
 static NTSTATUS KdbgContinueStatus = STATUS_SUCCESS;
 
 /* LOCKING FUNCTIONS *********************************************************/
@@ -580,6 +581,7 @@ KdSendPacket(
             KdbgNextApiNumber = DbgKdGetContextApi;
             KdbgExceptionRecord = WaitStateChange->u.Exception.ExceptionRecord;
             KdbgFirstChanceException = 
WaitStateChange->u.Exception.FirstChance;
+            KdbgPreviousMode = 
((PKTHREAD)(ULONG_PTR)WaitStateChange->Thread)->PreviousMode;
             return;
         }
     }
@@ -599,7 +601,7 @@ KdSendPacket(
             }
 
             Result = KdbEnterDebuggerException(&KdbgExceptionRecord,
-                                               KernelMode, // FIXME
+                                               KdbgPreviousMode,
                                                &KdbgContext,
                                                KdbgFirstChanceException);
 #else

Reply via email to