Avoid overwriting bootloader data
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user