diff --git a/Kernel/VM/Region.cpp b/Kernel/VM/Region.cpp index 2a32f7de62..cbe625aa64 100644 --- a/Kernel/VM/Region.cpp +++ b/Kernel/VM/Region.cpp @@ -225,18 +225,12 @@ bool Region::do_remap_vmobject_page(size_t page_index, bool with_flush) bool Region::remap_vmobject_page(size_t page_index, bool with_flush) { - bool success = true; auto& vmobject = this->vmobject(); - ScopedSpinLock lock(vmobject.m_lock); - if (vmobject.is_shared_by_multiple_regions()) { - vmobject.for_each_region([&](auto& region) { - if (!region.do_remap_vmobject_page(page_index, with_flush)) - success = false; - }); - } else { - if (!do_remap_vmobject_page(page_index, with_flush)) + bool success = true; + vmobject.for_each_region([&](auto& region) { + if (!region.do_remap_vmobject_page(page_index, with_flush)) success = false; - } + }); return success; } diff --git a/Kernel/VM/VMObject.cpp b/Kernel/VM/VMObject.cpp index aeded3697b..fd22c92c7f 100644 --- a/Kernel/VM/VMObject.cpp +++ b/Kernel/VM/VMObject.cpp @@ -31,7 +31,7 @@ VMObject::~VMObject() } MM.unregister_vmobject(*this); - VERIFY(m_regions_count.load(AK::MemoryOrder::memory_order_relaxed) == 0); + VERIFY(m_regions.is_empty()); } } diff --git a/Kernel/VM/VMObject.h b/Kernel/VM/VMObject.h index 7d2960328b..45a5976af8 100644 --- a/Kernel/VM/VMObject.h +++ b/Kernel/VM/VMObject.h @@ -52,19 +52,15 @@ public: ALWAYS_INLINE void add_region(Region& region) { ScopedSpinLock locker(m_lock); - m_regions_count++; m_regions.append(region); } ALWAYS_INLINE void remove_region(Region& region) { ScopedSpinLock locker(m_lock); - m_regions_count--; m_regions.remove(region); } - ALWAYS_INLINE bool is_shared_by_multiple_regions() const { return m_regions_count > 1; } - void register_on_deleted_handler(VMObjectDeletedHandler& handler) { ScopedSpinLock locker(m_on_deleted_lock); @@ -93,7 +89,6 @@ private: VMObject& operator=(VMObject&&) = delete; VMObject(VMObject&&) = delete; - Atomic m_regions_count { 0 }; HashTable m_on_deleted; SpinLock m_on_deleted_lock;