From dd8a9b1793c4c5a79bbef79d34604ff822735836 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 13 May 2026 20:03:37 +0300 Subject: [PATCH] Kernel: clamp msync address range instead of calling contains --- kernel/kernel/Memory/FileBackedRegion.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/kernel/kernel/Memory/FileBackedRegion.cpp b/kernel/kernel/Memory/FileBackedRegion.cpp index 3e2518bf..37fd3e0b 100644 --- a/kernel/kernel/Memory/FileBackedRegion.cpp +++ b/kernel/kernel/Memory/FileBackedRegion.cpp @@ -99,13 +99,12 @@ namespace Kernel if (m_type != Type::SHARED) return {}; - const vaddr_t first_page = address & PAGE_ADDR_MASK; - const vaddr_t last_page = BAN::Math::div_round_up(address + size, PAGE_SIZE) * PAGE_SIZE; + const vaddr_t first_page = BAN::Math::max(m_vaddr, address) & PAGE_ADDR_MASK; + const vaddr_t last_page = BAN::Math::div_round_up(BAN::Math::min(m_vaddr + m_size, address + size), PAGE_SIZE) * PAGE_SIZE; RWLockRDGuard _(m_shared_data->rw_lock); for (vaddr_t page_addr = first_page; page_addr < last_page; page_addr += PAGE_SIZE) - if (contains(page_addr)) - m_shared_data->sync_no_lock((m_offset + page_addr - m_vaddr) / PAGE_SIZE); + m_shared_data->sync_no_lock((m_offset + page_addr - m_vaddr) / PAGE_SIZE); return {}; }