From 7a8e5c8c537de2ed1fd7e4b4670cb949b22325a7 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 15 Oct 2024 12:12:09 -0400 Subject: [PATCH] kernel/vm: Fix allocating virtual ranges downwards from the bottom. Another regression from hrev58236: the code assigned start then size previously, but there was another temporary that made things work properly that was removed in that commit. Fixes #18140. --- src/system/kernel/vm/vm.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/vm/vm.cpp b/src/system/kernel/vm/vm.cpp index 9358429777..38d2bcdaa3 100644 --- a/src/system/kernel/vm/vm.cpp +++ b/src/system/kernel/vm/vm.cpp @@ -4297,7 +4297,7 @@ allocate_early_virtual(kernel_args* args, size_t size, addr_t alignment) const addr_t lastRangeEnd = lastRange.start + lastRange.size; addr_t base = alignment > 0 ? ROUNDUP(lastRangeEnd, alignment) : lastRangeEnd; - if (KERNEL_BASE + (KERNEL_SIZE - 1) - base >= size) { + if ((KERNEL_BASE + (KERNEL_SIZE - 1) - base) >= size) { lastRange.size += base + size - lastRangeEnd; return base; } @@ -4310,8 +4310,8 @@ allocate_early_virtual(kernel_args* args, size_t size, addr_t alignment) base = ROUNDDOWN(base, alignment); if (base >= KERNEL_BASE) { - firstRange.start = base; firstRange.size += firstRange.start - base; + firstRange.start = base; return base; } }