From 03f0cf904e250a2345aa0a220ee0f8cc01fd789f Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 28 Mar 2012 21:09:03 +0000 Subject: [PATCH] [NTOSKRNL] - ObReferenceObject() does NOT return an NTSTATUS. It returns the new reference count. Remove pointless NT_SUCCESS check - Enable interrupts in amd54 page fault handler before calling MmAccessFault - Add missing MmDecommittedPte for amd64 svn path=/trunk/; revision=56265 --- reactos/ntoskrnl/cache/section/swapout.c | 8 +------- reactos/ntoskrnl/ke/amd64/trap.S | 6 ++++++ reactos/ntoskrnl/mm/amd64/init.c | 3 +++ 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/reactos/ntoskrnl/cache/section/swapout.c b/reactos/ntoskrnl/cache/section/swapout.c index d2af2a39d98..2882342b9f3 100644 --- a/reactos/ntoskrnl/cache/section/swapout.c +++ b/reactos/ntoskrnl/cache/section/swapout.c @@ -349,13 +349,7 @@ MmpPageOutPhysicalAddress(PFN_NUMBER Page) ExReleaseFastMutex(&RmapListLock); goto bail; } - Status = ObReferenceObject(Process); - if (!NT_SUCCESS(Status)) - { - DPRINT("bail\n"); - ExReleaseFastMutex(&RmapListLock); - goto bail; - } + ObReferenceObject(Process); ProcRef = TRUE; AddressSpace = &Process->Vm; } diff --git a/reactos/ntoskrnl/ke/amd64/trap.S b/reactos/ntoskrnl/ke/amd64/trap.S index a5330ffb5f9..ea66437e3e9 100644 --- a/reactos/ntoskrnl/ke/amd64/trap.S +++ b/reactos/ntoskrnl/ke/amd64/trap.S @@ -416,6 +416,9 @@ FUNC KiPageFault mov rdx, cr2 mov [rbp + KTRAP_FRAME_FaultAddress], rdx + /* Enable interrupts for the page fault handler */ + sti + /* Call page fault handler */ mov ecx, [rbp + KTRAP_FRAME_ErrorCode] // StoreInstruction and ecx, 1 @@ -429,6 +432,9 @@ FUNC KiPageFault test eax, eax jge PageFaultReturn + /* Disable interrupts again for the debugger */ + cli + /* Set parameter 1 to error code */ mov r9d, [rbp + KTRAP_FRAME_ErrorCode] diff --git a/reactos/ntoskrnl/mm/amd64/init.c b/reactos/ntoskrnl/mm/amd64/init.c index 37e8d33c537..5d81595306f 100644 --- a/reactos/ntoskrnl/mm/amd64/init.c +++ b/reactos/ntoskrnl/mm/amd64/init.c @@ -34,6 +34,9 @@ MMPTE DemandZeroPte = {{MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS}}; MMPTE PrototypePte = {{(MM_READWRITE << MM_PTE_SOFTWARE_PROTECTION_BITS) | PTE_PROTOTYPE | (MI_PTE_LOOKUP_NEEDED << 32)}}; +/* Template PTE for decommited page */ +MMPTE MmDecommittedPte = {{MM_DECOMMIT << MM_PTE_SOFTWARE_PROTECTION_BITS}}; + /* Address ranges */ PVOID MiSessionViewEnd; PVOID MiSystemPteSpaceStart;