From 58ec4d6a314c0e0bbe8ff8732e671808a9dfe643 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Mon, 12 Jun 2023 00:59:19 +0300 Subject: [PATCH] Kernel: Fix bug in elf loading We were allocating one extra page --- kernel/kernel/Process.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kernel/kernel/Process.cpp b/kernel/kernel/Process.cpp index 1ab68699..cc0a7e2d 100644 --- a/kernel/kernel/Process.cpp +++ b/kernel/kernel/Process.cpp @@ -420,16 +420,16 @@ namespace Kernel size_t page_start = elf_program_header.p_vaddr / PAGE_SIZE; size_t page_end = BAN::Math::div_round_up(elf_program_header.p_vaddr + elf_program_header.p_memsz, PAGE_SIZE); - size_t page_count = page_end - page_start + 1; + size_t page_count = page_end - page_start; page_table().lock(); - if (!page_table().is_range_free(elf_program_header.p_vaddr, elf_program_header.p_memsz)) + if (!page_table().is_range_free(page_start * PAGE_SIZE, page_count * PAGE_SIZE)) { page_table().debug_dump(); - Kernel::panic("vaddr {8H}-{8H} not free", - elf_program_header.p_vaddr, - elf_program_header.p_vaddr + elf_program_header.p_memsz + Kernel::panic("vaddr {8H}-{8H} not free {8H}-{8H}", + page_start * PAGE_SIZE, + page_start * PAGE_SIZE + page_count * PAGE_SIZE ); }