Procházet zdrojové kódy

Kernel: Fix assertion when releasing contiguous memory region

There is no guarantee that the memory manager lock is held when
physical pages are released, so just acquire the memory manager
lock.
Tom před 5 roky
rodič
revize
cf8ce839da
1 změnil soubory, kde provedl 1 přidání a 1 odebrání
  1. 1 1
      Kernel/VM/MemoryManager.cpp

+ 1 - 1
Kernel/VM/MemoryManager.cpp

@@ -453,7 +453,7 @@ RefPtr<PhysicalPage> MemoryManager::allocate_user_physical_page(ShouldZeroFill s
 
 void MemoryManager::deallocate_supervisor_physical_page(PhysicalPage&& page)
 {
-    ASSERT(s_mm_lock.is_locked());
+    ScopedSpinLock lock(s_mm_lock);
     for (auto& region : m_super_physical_regions) {
         if (!region.contains(page)) {
             klog() << "MM: deallocate_supervisor_physical_page: " << page.paddr() << " not in " << region.lower() << " -> " << region.upper();