From ff1991546648450dc95553095ff4e8928a431be7 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Fri, 17 Feb 2023 19:34:12 +0000 Subject: [PATCH] vm: mark memory holes as reserved under sparse memory model --- vm/sparse.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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]; }