From a79f26250a809f98cc7ce01c5842f856108207c7 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Wed, 25 Mar 2026 09:53:57 +0100 Subject: [PATCH] Fix check for PTE removal flag --- xtoskrnl/mm/alloc.cc | 2 +- xtoskrnl/mm/pfn.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xtoskrnl/mm/alloc.cc b/xtoskrnl/mm/alloc.cc index 3f12ee82..eb01bf5b 100644 --- a/xtoskrnl/mm/alloc.cc +++ b/xtoskrnl/mm/alloc.cc @@ -818,7 +818,7 @@ MM::Allocator::FreeNonPagedPoolPages(IN PVOID VirtualAddress, PageFrameNumber = MM::Paging::GetPageFrameNumber(PointerPte); Pfn = MM::Pfn::GetPfnEntry(PageFrameNumber); - /* Clear PFN shared count and mark the PFN as deleted */ + /* Clear PFN shared count and mark the PFN as ready for removal */ Pfn->u2.ShareCount = 0; Pfn->PteAddress = (PMMPTE)((ULONG_PTR)Pfn->PteAddress | 0x1); diff --git a/xtoskrnl/mm/pfn.cc b/xtoskrnl/mm/pfn.cc index 4b095f7f..efe8a686 100644 --- a/xtoskrnl/mm/pfn.cc +++ b/xtoskrnl/mm/pfn.cc @@ -185,7 +185,7 @@ MM::Pfn::DecrementReferenceCount(IN PMMPFN PageFrameNumber, } /* Check if the PTE is marked as being ready for removal */ - if(MM::Paging::GetPte(PageFrameNumber->PteAddress) & 0x1) + if((ULONG_PTR)PageFrameNumber->PteAddress & 0x1) { /* Check the page's cache attribute */ if((PageFrameNumber->u3.e1.CacheAttribute != PfnCached) &&