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;