From bcbe2fe5258f0fdd66b500e013228475079a6f39 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 25 Aug 2020 17:12:18 -0600 Subject: [PATCH] Kernel: Protect looping over VMObject regions We need to hold the memory manager lock so nobody else can modify these lists while we're iterating them. --- Kernel/VM/MemoryManager.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Kernel/VM/MemoryManager.h b/Kernel/VM/MemoryManager.h index f2c3bde451..586caa5d0d 100644 --- a/Kernel/VM/MemoryManager.h +++ b/Kernel/VM/MemoryManager.h @@ -220,6 +220,7 @@ private: template void VMObject::for_each_region(Callback callback) { + ScopedSpinLock lock(s_mm_lock); // FIXME: Figure out a better data structure so we don't have to walk every single region every time an inode changes. // Perhaps VMObject could have a Vector with all of his mappers? for (auto& region : MM.m_user_regions) {