diff options
author | Jorropo <jorropo.pgm@gmail.com> | 2022-08-14 23:54:24 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2022-08-15 00:11:33 +0200 |
commit | ec4b83326b08408f7b24c021503990d0fddcceb5 (patch) | |
tree | 6ec3cdbfc20c89f4793ba0133645f27975b6bd58 /Kernel/Memory/MemoryManager.cpp | |
parent | 3c7b0dab0bd5df874d39c5518c521565ceb9d1d6 (diff) | |
download | serenity-ec4b83326b08408f7b24c021503990d0fddcceb5.zip |
Kernel: Don't release file-pages if volatile memory purge did it
Diffstat (limited to 'Kernel/Memory/MemoryManager.cpp')
-rw-r--r-- | Kernel/Memory/MemoryManager.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Kernel/Memory/MemoryManager.cpp b/Kernel/Memory/MemoryManager.cpp index 77ad11449c..ff45405fce 100644 --- a/Kernel/Memory/MemoryManager.cpp +++ b/Kernel/Memory/MemoryManager.cpp @@ -942,6 +942,8 @@ ErrorOr<NonnullRefPtr<PhysicalPage>> MemoryManager::allocate_physical_page(Shoul } return IterationDecision::Continue; }); + } + if (!page) { // Second, we look for a file-backed VMObject with clean pages. for_each_vmobject([&](auto& vmobject) { if (!vmobject.is_inode()) @@ -956,10 +958,10 @@ ErrorOr<NonnullRefPtr<PhysicalPage>> MemoryManager::allocate_physical_page(Shoul } return IterationDecision::Continue; }); - if (!page) { - dmesgln("MM: no physical pages available"); - return ENOMEM; - } + } + if (!page) { + dmesgln("MM: no physical pages available"); + return ENOMEM; } if (should_zero_fill == ShouldZeroFill::Yes) { |