diff --git a/Kernel/VM/AnonymousVMObject.cpp b/Kernel/VM/AnonymousVMObject.cpp index d41a1ae1465..3823bda74a0 100644 --- a/Kernel/VM/AnonymousVMObject.cpp +++ b/Kernel/VM/AnonymousVMObject.cpp @@ -362,7 +362,7 @@ size_t AnonymousVMObject::mark_committed_pages_for_nonvolatile_range(VolatilePag return pages_updated; } -RefPtr AnonymousVMObject::allocate_committed_page(size_t page_index) +NonnullRefPtr AnonymousVMObject::allocate_committed_page(Badge, size_t page_index) { { ScopedSpinLock lock(m_lock); diff --git a/Kernel/VM/AnonymousVMObject.h b/Kernel/VM/AnonymousVMObject.h index 6cbe9d01170..7ea9ea75ea2 100644 --- a/Kernel/VM/AnonymousVMObject.h +++ b/Kernel/VM/AnonymousVMObject.h @@ -26,7 +26,7 @@ public: static RefPtr try_create_with_physical_pages(Span>); virtual RefPtr try_clone() override; - RefPtr allocate_committed_page(size_t); + [[nodiscard]] NonnullRefPtr allocate_committed_page(Badge, size_t); PageFaultResponse handle_cow_fault(size_t, VirtualAddress); size_t cow_pages() const; bool should_cow(size_t page_index, bool) const; diff --git a/Kernel/VM/Region.cpp b/Kernel/VM/Region.cpp index 3030027623f..b885f7f9f4c 100644 --- a/Kernel/VM/Region.cpp +++ b/Kernel/VM/Region.cpp @@ -426,7 +426,8 @@ PageFaultResponse Region::handle_fault(const PageFault& fault, ScopedSpinLockis_lazy_committed_page()) { auto page_index_in_vmobject = translate_to_vmobject_page(page_index_in_region); - page_slot = static_cast(*m_vmobject).allocate_committed_page(page_index_in_vmobject); + VERIFY(m_vmobject->is_anonymous()); + page_slot = static_cast(*m_vmobject).allocate_committed_page({}, page_index_in_vmobject); remap_vmobject_page(page_index_in_vmobject); return PageFaultResponse::Continue; } @@ -495,7 +496,8 @@ PageFaultResponse Region::handle_zero_fault(size_t page_index_in_region, ScopedS current_thread->did_zero_fault(); if (page_slot->is_lazy_committed_page()) { - page_slot = static_cast(*m_vmobject).allocate_committed_page(page_index_in_vmobject); + VERIFY(m_vmobject->is_anonymous()); + page_slot = static_cast(*m_vmobject).allocate_committed_page({}, page_index_in_vmobject); dbgln_if(PAGE_FAULT_DEBUG, " >> ALLOCATED COMMITTED {}", page_slot->paddr()); } else { page_slot = MM.allocate_user_physical_page(MemoryManager::ShouldZeroFill::Yes);