diff --git a/kernel/kernel/Memory/FixedWidthAllocator.cpp b/kernel/kernel/Memory/FixedWidthAllocator.cpp index d40024be45..17c0cf5277 100644 --- a/kernel/kernel/Memory/FixedWidthAllocator.cpp +++ b/kernel/kernel/Memory/FixedWidthAllocator.cpp @@ -1,5 +1,4 @@ #include -#include namespace Kernel { @@ -229,7 +228,8 @@ namespace Kernel if (allocator == nullptr) return BAN::Error::from_errno(ENOMEM); - PageTableScope _(m_page_table); + m_page_table.lock(); + ASSERT(m_page_table.is_page_free(0)); for (node* node = m_used_list; node; node = node->next) @@ -257,6 +257,8 @@ namespace Kernel m_page_table.unmap_page(0); m_page_table.invalidate(0); + m_page_table.unlock(); + return allocator; } diff --git a/kernel/kernel/Memory/GeneralAllocator.cpp b/kernel/kernel/Memory/GeneralAllocator.cpp index e7a0f78bf5..e481abdb21 100644 --- a/kernel/kernel/Memory/GeneralAllocator.cpp +++ b/kernel/kernel/Memory/GeneralAllocator.cpp @@ -1,6 +1,4 @@ #include -#include -#include namespace Kernel { @@ -68,7 +66,8 @@ namespace Kernel if (allocator == nullptr) return BAN::Error::from_errno(ENOMEM); - PageTableScope _(m_page_table); + m_page_table.lock(); + ASSERT(m_page_table.is_page_free(0)); for (auto& allocation : m_allocations) @@ -100,6 +99,8 @@ namespace Kernel m_page_table.unmap_page(0); m_page_table.invalidate(0); + m_page_table.unlock(); + return allocator; } diff --git a/kernel/kernel/Memory/VirtualRange.cpp b/kernel/kernel/Memory/VirtualRange.cpp index c6e2790bf2..e90d750e38 100644 --- a/kernel/kernel/Memory/VirtualRange.cpp +++ b/kernel/kernel/Memory/VirtualRange.cpp @@ -1,5 +1,4 @@ #include -#include #include namespace Kernel @@ -78,7 +77,8 @@ namespace Kernel { VirtualRange* result = create(page_table, vaddr(), size(), flags()); - PageTableScope _(m_page_table); + m_page_table.lock(); + ASSERT(m_page_table.is_page_free(0)); for (size_t i = 0; i < result->m_physical_pages.size(); i++) { @@ -89,6 +89,8 @@ namespace Kernel m_page_table.unmap_page(0); m_page_table.invalidate(0); + m_page_table.unlock(); + return result; }