summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/PEFCodeMgr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dev/kernel/src/PEFCodeMgr.cc')
-rw-r--r--dev/kernel/src/PEFCodeMgr.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/dev/kernel/src/PEFCodeMgr.cc b/dev/kernel/src/PEFCodeMgr.cc
index 632d5baa..40a0cff9 100644
--- a/dev/kernel/src/PEFCodeMgr.cc
+++ b/dev/kernel/src/PEFCodeMgr.cc
@@ -12,6 +12,7 @@
#include <NewKit/KString.h>
#include <NewKit/KernelPanic.h>
#include <NewKit/OwnPtr.h>
+#include "KernelKit/UserProcessScheduler.h"
/// @brief PEF stack size symbol.
#define kPefStackSizeSymbol "__PEFSizeOfReserveStack"
@@ -242,7 +243,11 @@ namespace Utils {
auto stacksym = exec.FindSymbol(kPefStackSizeSymbol, kPefData);
if (!symname) {
- stacksym = ErrorOr<VoidPtr>{(VoidPtr) new UIntPtr(mib_cast(16))};
+ stacksym = ErrorOr<VoidPtr>{(VoidPtr) new UIntPtr(kSchedMaxStackSz)};
+ }
+
+ if ((*(volatile UIntPtr*)stacksym.Leak().Leak()) > kSchedMaxStackSz) {
+ *(volatile UIntPtr*)stacksym.Leak().Leak() = kSchedMaxStackSz;
}
UserProcessScheduler::The().CurrentTeam().AsArray()[id].Kind = process_kind;