diff --git a/vm/sparse.c b/vm/sparse.c index 77daf21..1a15339 100644 --- a/vm/sparse.c +++ b/vm/sparse.c @@ -60,9 +60,15 @@ static vm_page_t *get_or_create_page(phys_addr_t addr) vm_sector_t *sector = §or_array[sector_number]; if (!sector->s_pages) { - sector->s_pages = kzalloc(vm_page_order_to_pages(sector->s_size) * sizeof(vm_page_t), 0); + size_t nr_pages = vm_page_order_to_pages(sector->s_size); + sector->s_pages = kzalloc(nr_pages * sizeof(vm_page_t), 0); + + for (size_t i = 0; i < nr_pages; i++) { + sector->s_pages[i].p_flags = VM_PAGE_RESERVED; + } } + sector->s_pages[page_number].p_sector = sector_number; return §or->s_pages[page_number]; }