Kernel: Temporarily force FileBackedRegion mappings writable
Now that write-protect bit is enabled this is neccessary.
This commit is contained in:
parent
42772611ce
commit
640d27748f
|
@ -98,7 +98,9 @@ namespace Kernel
|
|||
paddr_t paddr = Heap::get().take_free_page();
|
||||
if (paddr == 0)
|
||||
return BAN::Error::from_errno(ENOMEM);
|
||||
m_page_table.map_page_at(paddr, vaddr, m_flags);
|
||||
|
||||
// Temporarily force mapping to be writable so kernel can write to it
|
||||
m_page_table.map_page_at(paddr, vaddr, m_flags | PageTable::Flags::ReadWrite);
|
||||
|
||||
size_t file_offset = m_offset + (vaddr - m_vaddr);
|
||||
size_t bytes = BAN::Math::min<size_t>(m_size - file_offset, PAGE_SIZE);
|
||||
|
@ -120,6 +122,10 @@ namespace Kernel
|
|||
m_page_table.unmap_page(vaddr);
|
||||
return BAN::Error::from_errno(EIO);
|
||||
}
|
||||
|
||||
// Disable writable if not wanted
|
||||
if (!(m_flags & PageTable::Flags::ReadWrite))
|
||||
m_page_table.map_page_at(paddr, vaddr, m_flags);
|
||||
}
|
||||
else if (m_type == Type::SHARED)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue