From 36e53bfc8cd3ea4604156bd849efa39ece71e086 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Tue, 6 Jan 2026 14:05:09 +0100 Subject: [PATCH] Ensure every page in a bad memory region is marked as bad --- xtoskrnl/mm/amd64/pfn.cc | 8 ++++++-- xtoskrnl/mm/i686/pfn.cc | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/xtoskrnl/mm/amd64/pfn.cc b/xtoskrnl/mm/amd64/pfn.cc index fd25f3c..3f5c952 100644 --- a/xtoskrnl/mm/amd64/pfn.cc +++ b/xtoskrnl/mm/amd64/pfn.cc @@ -213,8 +213,12 @@ MM::Pfn::ProcessMemoryDescriptor(IN PFN_NUMBER BasePage, switch(MemoryType) { case LoaderBad: - /* This memory is marked as bad and should not be used, add it to the bad pages list */ - LinkPage(&BadPagesList, BasePage); + /* This memory is marked as bad and should not be used */ + for(PageNumber = 0; PageNumber < PageCount; PageNumber++) + { + /* Link the page to the bad pages list */ + LinkPage(&BadPagesList, BasePage + PageNumber); + } break; case LoaderXIPRom: /* This memory range contains Read-Only Memory (ROM) */ diff --git a/xtoskrnl/mm/i686/pfn.cc b/xtoskrnl/mm/i686/pfn.cc index 5af5508..89403a7 100644 --- a/xtoskrnl/mm/i686/pfn.cc +++ b/xtoskrnl/mm/i686/pfn.cc @@ -201,8 +201,12 @@ MM::Pfn::ProcessMemoryDescriptor(IN PFN_NUMBER BasePage, switch(MemoryType) { case LoaderBad: - /* This memory is marked as bad and should not be used, add it to the bad pages list */ - LinkPage(&BadPagesList, BasePage); + /* This memory is marked as bad and should not be used */ + for(PageNumber = 0; PageNumber < PageCount; PageNumber++) + { + /* Link the page to the bad pages list */ + LinkPage(&BadPagesList, BasePage + PageNumber); + } break; case LoaderXIPRom: /* This memory range contains Read-Only Memory (ROM) */