Kernel/LibELF: Map pages always as RW so kernel can write to them

Kernel doesn't seem to require W permissions to a page without UEFI
so this had not been found earlier.
This commit is contained in:
Bananymous 2023-10-30 12:14:12 +02:00
parent f72fdeeb59
commit 3d899d2e44
1 changed files with 5 additions and 1 deletions

View File

@ -226,7 +226,8 @@ namespace LibELF
if (paddr == 0)
return BAN::Error::from_errno(ENOMEM);
m_page_table.map_page_at(paddr, vaddr, flags);
// Temporarily map page as RW so kernel can write to it
m_page_table.map_page_at(paddr, vaddr, PageTable::Flags::ReadWrite | PageTable::Flags::Present);
m_physical_page_count++;
memset((void*)vaddr, 0x00, PAGE_SIZE);
@ -245,6 +246,9 @@ namespace LibELF
TRY(m_inode->read(program_header.p_offset + file_offset, { (uint8_t*)vaddr + vaddr_offset, bytes }));
}
// Map page with the correct flags
m_page_table.map_page_at(paddr, vaddr, flags);
return {};
}
default: