summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/PEFCodeMgr.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-08-04 14:27:22 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-08-04 14:27:22 +0100
commitc02e7972bd2a308d9c9ac3aec78d0530d5498b0a (patch)
treede7ae350346f75ecca94eddd0d4eeedd212bb8b9 /dev/kernel/src/PEFCodeMgr.cc
parentf8d0d1d8f2745e9fad759638c74d0047fda36fee (diff)
feat: `mm_map_page` should iterate over `pages_count`, not `VMSize` directly.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/PEFCodeMgr.cc')
-rw-r--r--dev/kernel/src/PEFCodeMgr.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/dev/kernel/src/PEFCodeMgr.cc b/dev/kernel/src/PEFCodeMgr.cc
index da69202e..357c279b 100644
--- a/dev/kernel/src/PEFCodeMgr.cc
+++ b/dev/kernel/src/PEFCodeMgr.cc
@@ -16,6 +16,7 @@
#include <NeKit/KernelPanic.h>
#include <NeKit/OwnPtr.h>
#include <NeKit/Utils.h>
+#include "HALKit/AMD64/Paging.h"
/// @author Amlal El Mahrouss (amlal@nekernel.org)
/// @brief PEF backend for the Code Manager.
@@ -173,7 +174,10 @@ ErrorOr<VoidPtr> PEFLoader::FindSymbol(const Char* name, Int32 kind) {
kout << "PEFLoader: info: Loaded stub: " << container_header[index].Name << "!\r";
auto ret = false;
- for (SizeT i_vm{}; i_vm < container_header[index].VMSize; ++i_vm) {
+
+ auto pages_count = (container_header[index].VMSize + kPageSize - 1) / kPageSize;
+
+ for (SizeT i_vm{}; i_vm < pages_count; ++i_vm) {
ret = HAL::mm_map_page((VoidPtr) (container_header[index].VMAddress + i_vm),
(VoidPtr) HAL::mm_get_page_addr(container_blob_value),
HAL::kMMFlagsPresent | HAL::kMMFlagsUser);