Prechádzať zdrojové kódy

Kernel: Don't skip if found free page to allocate from a super region

This was a bad pattern that wasn't detected because we only had one
super physical region that was initialized by MemoryManager.
Liav A 4 rokov pred
rodič
commit
afba614d68
1 zmenil súbory, kde vykonal 4 pridanie a 4 odobranie
  1. 4 4
      Kernel/VM/MemoryManager.cpp

+ 4 - 4
Kernel/VM/MemoryManager.cpp

@@ -571,8 +571,8 @@ NonnullRefPtrVector<PhysicalPage> MemoryManager::allocate_contiguous_supervisor_
 
     for (auto& region : m_super_physical_regions) {
         physical_pages = region.take_contiguous_free_pages((count), true);
-        if (physical_pages.is_empty())
-            continue;
+        if (!physical_pages.is_empty())
+            break;
     }
 
     if (physical_pages.is_empty()) {
@@ -598,8 +598,8 @@ RefPtr<PhysicalPage> MemoryManager::allocate_supervisor_physical_page()
 
     for (auto& region : m_super_physical_regions) {
         page = region.take_free_page(true);
-        if (page.is_null())
-            continue;
+        if (!page.is_null())
+            break;
     }
 
     if (!page) {