- Fix another typo in CommonDispatchException (with yet another critical flaw as a result). Sometimes, exceptions would incorrectly be detected as coming from user-mode even though CS was kernel mode. When creating the KTRAP_FRAME, the kernel would then add the Ring 3 RPL_MASK (3) (because it believed we're in usermode) to the kernel-mode CS, creating the invalid CS of 0xB, which would lead into a GPF during the iretd.

- Re-enable DebugPrint since this now works.

svn path=/trunk/; revision=25976
This commit is contained in:
Alex Ionescu 2007-03-03 19:49:36 +00:00
parent a195100319
commit c44e8d2c89
3 changed files with 3 additions and 2 deletions

View file

@ -23,7 +23,6 @@ DebugPrint(IN PANSI_STRING DebugString,
IN ULONG Level)
{
/* Call the INT2D Service */
return STATUS_SUCCESS;
return DebugService(BREAKPOINT_PRINT,
DebugString->Buffer,
DebugString->Length,

View file

@ -127,6 +127,7 @@ KdpEnterDebuggerException(IN PKTRAP_FRAME TrapFrame,
/* This we can handle: simply bump EIP */
Context->Eip++;
return TRUE;
}
/* Get out of here if the Debugger isn't connected */

View file

@ -604,7 +604,7 @@ NoParams:
/* Set the record in ECX and check if this was V86 */
mov ecx, esp
test dword ptr [esp+KTRAP_FRAME_EFLAGS], EFLAGS_V86_MASK
test dword ptr [ebp+KTRAP_FRAME_EFLAGS], EFLAGS_V86_MASK
jz SetPreviousMode
/* Set V86 mode */
@ -791,6 +791,7 @@ EnableInterrupts3:
sti
PrepInt3:
/* Prepare the exception */
mov esi, ecx
mov edi, edx