diff --git a/xtoskrnl/mm/amd64/pfn.cc b/xtoskrnl/mm/amd64/pfn.cc index fd25f3c2..3f5c9528 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 5af5508d..89403a77 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) */