diff options
Diffstat (limited to 'kernel/memory/paging.c')
-rw-r--r-- | kernel/memory/paging.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/memory/paging.c b/kernel/memory/paging.c index b23e39b..5a0b285 100644 --- a/kernel/memory/paging.c +++ b/kernel/memory/paging.c @@ -828,11 +828,12 @@ void *mem_alloc_pages_at(mem_ctx_t ctx, size_t count, void *virt, kunmapaddr(pageone); } + // index into virtual page array at index [count - pages_needed] + void *vaddr = ((uint8_t *)virt) + ((count - pages_needed) * PAGE_SIZE); + assert(pages_needed >= phys_pages.num_pages, "overflow"); pages_needed -= phys_pages.num_pages; - // index into virtual page array at index [count - pages_needed] - void *vaddr = ((uint8_t *)virt) + ((count - pages_needed) * PAGE_SIZE); if (map_pages((volatile struct pml4 *)ctx->pml4, vaddr, phys_pages.pagestart, flags, phys_pages.num_pages)) { goto mem_alloc_pages_at_fail; |