From 4b5a8196c37502110f09e2f055bab5ea622242e9 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 4 Jan 2026 01:16:43 +0200 Subject: [PATCH] Kernel: Fix bitmap byte index calculation in PMM No idea how I had not crashed here earlier, but running on real hw with a bit initrd ended up crashing :D --- kernel/kernel/Memory/PhysicalRange.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/kernel/kernel/Memory/PhysicalRange.cpp b/kernel/kernel/Memory/PhysicalRange.cpp index 91d1c68f..38f6a12c 100644 --- a/kernel/kernel/Memory/PhysicalRange.cpp +++ b/kernel/kernel/Memory/PhysicalRange.cpp @@ -98,8 +98,9 @@ namespace Kernel [this](size_t buffer_bit) -> bool { const size_t page_index = buffer_bit / bits_per_page; - const size_t byte = buffer_bit / 8; - const size_t bit = buffer_bit % 8; + const size_t bit_index = buffer_bit % bits_per_page; + const size_t byte = bit_index / 8; + const size_t bit = bit_index % 8; uint8_t current; PageTable::with_fast_page(m_paddr + page_index * PAGE_SIZE, [¤t, byte] { @@ -113,8 +114,9 @@ namespace Kernel [this](size_t buffer_bit) -> void { const size_t page_index = buffer_bit / bits_per_page; - const size_t byte = buffer_bit / 8; - const size_t bit = buffer_bit % 8; + const size_t bit_index = buffer_bit % bits_per_page; + const size_t byte = bit_index / 8; + const size_t bit = bit_index % 8; PageTable::with_fast_page(m_paddr + page_index * PAGE_SIZE, [byte, bit] { volatile uint8_t& current = PageTable::fast_page_as_sized(byte); current = current | (1u << bit);