Avoid overwriting bootloader data

This commit is contained in:
2022-01-06 22:52:26 +01:00
parent 64df5d2b45
commit 60bb1bd039
3 changed files with 25 additions and 6 deletions

View File

@@ -19,9 +19,6 @@ void memory_init()
for(uint64_t p = start; p < end; p += PAGE_SIZE)
{
if(p >= V2P(&kernel_start) && p < V2P(&kernel_end))
continue;
uint64_t vaddr = (uint64_t)P2V(p);
uint64_t page = vmm_get_page(kernel_P4, vaddr);
if(page == (uint64_t)-1 || !(page & PAGE_PRESENT))
@@ -30,8 +27,14 @@ void memory_init()
vmm_set_page(kernel_P4, vaddr, p, flags);
}
if(type == MMAP_FREE)
pmm_free(p);
if(type != MMAP_FREE)
continue;
if(p >= V2P(&kernel_start) && p < V2P(&kernel_end))
continue;
if(multiboot_page_used((uintptr_t)P2V(p)))
continue;
pmm_free(p);
}
}
}