Kernel: Make PhysicalPage not movable and use atomic ref counting

We should not be moving ref-counted objects.
This commit is contained in:
Tom
2020-08-21 21:49:50 -06:00
committed by Andreas Kling
parent 3320bb45d1
commit 08a569fbe0
5 changed files with 20 additions and 24 deletions

View File

@@ -378,7 +378,7 @@ OwnPtr<Region> MemoryManager::allocate_kernel_region_with_vmobject(VMObject& vmo
return allocate_kernel_region_with_vmobject(range, vmobject, name, access, user_accessible, cacheable);
}
void MemoryManager::deallocate_user_physical_page(PhysicalPage&& page)
void MemoryManager::deallocate_user_physical_page(const PhysicalPage& page)
{
ScopedSpinLock lock(s_mm_lock);
for (auto& region : m_user_physical_regions) {
@@ -387,7 +387,7 @@ void MemoryManager::deallocate_user_physical_page(PhysicalPage&& page)
continue;
}
region.return_page(move(page));
region.return_page(page);
--m_user_physical_pages_used;
return;
@@ -448,7 +448,7 @@ RefPtr<PhysicalPage> MemoryManager::allocate_user_physical_page(ShouldZeroFill s
return page;
}
void MemoryManager::deallocate_supervisor_physical_page(PhysicalPage&& page)
void MemoryManager::deallocate_supervisor_physical_page(const PhysicalPage& page)
{
ScopedSpinLock lock(s_mm_lock);
for (auto& region : m_super_physical_regions) {
@@ -457,7 +457,7 @@ void MemoryManager::deallocate_supervisor_physical_page(PhysicalPage&& page)
continue;
}
region.return_page(move(page));
region.return_page(page);
--m_super_physical_pages_used;
return;
}