From ebbae015efc22525b341375d1181053fef47e8af Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Wed, 9 Dec 2020 23:10:33 +0100 Subject: [PATCH] UserspaceEmulator: Fix page determination Note that this *only* affects the last few bytes of the ELF headers, since all other allocations are PAGE_SIZE aligned. --- DevTools/UserspaceEmulator/SoftMMU.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/DevTools/UserspaceEmulator/SoftMMU.cpp b/DevTools/UserspaceEmulator/SoftMMU.cpp index 2bb85afa39..2b4bddd943 100644 --- a/DevTools/UserspaceEmulator/SoftMMU.cpp +++ b/DevTools/UserspaceEmulator/SoftMMU.cpp @@ -48,8 +48,9 @@ void SoftMMU::add_region(NonnullOwnPtr region) m_shbuf_regions.set(static_cast(region.ptr())->shbuf_id(), region.ptr()); size_t first_page_in_region = region->base() / PAGE_SIZE; - for (size_t i = 0; i < ceil_div(region->size(), PAGE_SIZE); ++i) { - m_page_to_region_map[first_page_in_region + i] = region.ptr(); + size_t last_page_in_region = (region->base() + region->size() - 1) / PAGE_SIZE; + for (size_t page = first_page_in_region; page <= last_page_in_region; ++page) { + m_page_to_region_map[page] = region.ptr(); } m_regions.append(move(region));