mirror of
https://github.com/reactos/reactos.git
synced 2024-10-05 00:43:21 +00:00
[NTOSKRNL]
- Fix completely broken code to detect invalid MSR access in KiTrap0DHandler - Fix MSVC warnings svn path=/trunk/; revision=52548
This commit is contained in:
parent
9659a39678
commit
b92c0d9f52
|
@ -143,7 +143,7 @@ KiServiceExit(IN PKTRAP_FRAME TrapFrame,
|
|||
KiCommonExit(TrapFrame, 0);
|
||||
|
||||
/* Restore previous mode */
|
||||
KeGetCurrentThread()->PreviousMode = TrapFrame->PreviousPreviousMode;
|
||||
KeGetCurrentThread()->PreviousMode = (CCHAR)TrapFrame->PreviousPreviousMode;
|
||||
|
||||
/* Check for user mode exit */
|
||||
if (TrapFrame->SegCs & MODE_MASK)
|
||||
|
@ -174,7 +174,7 @@ KiServiceExit2(IN PKTRAP_FRAME TrapFrame)
|
|||
KiCommonExit(TrapFrame, 0);
|
||||
|
||||
/* Restore previous mode */
|
||||
KeGetCurrentThread()->PreviousMode = TrapFrame->PreviousPreviousMode;
|
||||
KeGetCurrentThread()->PreviousMode = (CCHAR)TrapFrame->PreviousPreviousMode;
|
||||
|
||||
/* Check if this was a V8086 trap */
|
||||
if (TrapFrame->EFlags & EFLAGS_V86_MASK) KiTrapReturnNoSegments(TrapFrame);
|
||||
|
@ -1121,8 +1121,8 @@ KiTrap0DHandler(IN PKTRAP_FRAME TrapFrame)
|
|||
|
||||
/* So since we're not dealing with the above case, check for RDMSR/WRMSR */
|
||||
if ((Instructions[0] == 0xF) && // 2-byte opcode
|
||||
(((Instructions[1] >> 8) == 0x30) || // RDMSR
|
||||
((Instructions[2] >> 8) == 0x32))) // WRMSR
|
||||
((Instructions[1] == 0x32) || // RDMSR
|
||||
(Instructions[1] == 0x30))) // WRMSR
|
||||
{
|
||||
/* Unknown CPU MSR, so raise an access violation */
|
||||
KiDispatchException0Args(STATUS_ACCESS_VIOLATION,
|
||||
|
|
|
@ -452,7 +452,7 @@ ExAllocatePoolWithTag(IN POOL_TYPE PoolType,
|
|||
PLIST_ENTRY ListHead;
|
||||
PPOOL_HEADER Entry, NextEntry, FragmentEntry;
|
||||
KIRQL OldIrql;
|
||||
ULONG BlockSize, i;
|
||||
USHORT BlockSize, i;
|
||||
|
||||
//
|
||||
// Some sanity checks
|
||||
|
@ -495,7 +495,8 @@ ExAllocatePoolWithTag(IN POOL_TYPE PoolType,
|
|||
// request would've been treated as a POOL_MAX_ALLOC earlier and resulted in
|
||||
// the direct allocation of pages.
|
||||
//
|
||||
i = (NumberOfBytes + sizeof(POOL_HEADER) + (POOL_BLOCK_SIZE - 1)) / POOL_BLOCK_SIZE;
|
||||
i = (USHORT)((NumberOfBytes + sizeof(POOL_HEADER) + (POOL_BLOCK_SIZE - 1))
|
||||
/ POOL_BLOCK_SIZE);
|
||||
|
||||
//
|
||||
// Loop in the free lists looking for a block if this size. Start with the
|
||||
|
@ -748,7 +749,7 @@ ExFreePoolWithTag(IN PVOID P,
|
|||
IN ULONG TagToFree)
|
||||
{
|
||||
PPOOL_HEADER Entry, NextEntry;
|
||||
ULONG BlockSize;
|
||||
USHORT BlockSize;
|
||||
KIRQL OldIrql;
|
||||
POOL_TYPE PoolType;
|
||||
PPOOL_DESCRIPTOR PoolDesc;
|
||||
|
|
Loading…
Reference in a new issue