From 36e678741533d8e26bf9219dae5631f37a5998a3 Mon Sep 17 00:00:00 2001 From: apio Date: Sun, 18 Jun 2023 20:29:32 +0200 Subject: [PATCH] kernel: Make sure addresses allocated by mmap() are ALWAYS page-aligned Fixes a kernel crash. Thanks a lot, sysfuzz! --- kernel/src/sys/mmap.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/src/sys/mmap.cpp b/kernel/src/sys/mmap.cpp index 66c89fc4..f6516d20 100644 --- a/kernel/src/sys/mmap.cpp +++ b/kernel/src/sys/mmap.cpp @@ -41,9 +41,9 @@ Result sys_mmap(Registers*, SyscallArgs args) else { // FIXME: We should be more flexible if MAP_FIXED was not specified. - if (!TRY(current->vm_allocator->test_and_alloc_region((u64)addr, get_blocks_from_size(len, ARCH_PAGE_SIZE)))) + address = align_down((u64)addr); + if (!TRY(current->vm_allocator->test_and_alloc_region(address, get_blocks_from_size(len, ARCH_PAGE_SIZE)))) return err(ENOMEM); - address = (u64)addr; } int mmu_flags = MMU::User | MMU::NoExecute;