summaryrefslogtreecommitdiff
path: root/Kernel/Thread.cpp
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-10-31 13:57:07 +0100
committerAndreas Kling <awesomekling@gmail.com>2019-10-31 13:57:07 +0100
commit904c871727cca9fc53f6447228df9d8f8bcb2de8 (patch)
treeb14f4b42ff5ed373bf0cb229759acae2966b44f8 /Kernel/Thread.cpp
parent6bd1879189c2acefdb91c80400f685ea99e2b46a (diff)
downloadserenity-904c871727cca9fc53f6447228df9d8f8bcb2de8.zip
Kernel: Allow userspace stacks to grow up to 4 MB by default
Make userspace stacks lazily allocated and allow them to grow up to 4 megabytes. This avoids a lot of silly crashes we were running into with software expecting much larger stacks. :^)
Diffstat (limited to 'Kernel/Thread.cpp')
-rw-r--r--Kernel/Thread.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp
index 467c4903ca..ca6a3271ae 100644
--- a/Kernel/Thread.cpp
+++ b/Kernel/Thread.cpp
@@ -502,7 +502,7 @@ void Thread::push_value_on_stack(u32 value)
void Thread::make_userspace_stack_for_main_thread(Vector<String> arguments, Vector<String> environment)
{
- auto* region = m_process.allocate_region(VirtualAddress(), default_userspace_stack_size, "Stack (Main thread)");
+ auto* region = m_process.allocate_region(VirtualAddress(), default_userspace_stack_size, "Stack (Main thread)", PROT_READ | PROT_WRITE, false);
ASSERT(region);
m_tss.esp = region->vaddr().offset(default_userspace_stack_size).get();
@@ -537,7 +537,7 @@ void Thread::make_userspace_stack_for_main_thread(Vector<String> arguments, Vect
void Thread::make_userspace_stack_for_secondary_thread(void* argument)
{
- m_userspace_stack_region = m_process.allocate_region(VirtualAddress(), default_userspace_stack_size, String::format("Stack (Thread %d)", tid()));
+ m_userspace_stack_region = m_process.allocate_region(VirtualAddress(), default_userspace_stack_size, String::format("Stack (Thread %d)", tid()), PROT_READ | PROT_WRITE, false);
ASSERT(m_userspace_stack_region);
m_tss.esp = m_userspace_stack_region->vaddr().offset(default_userspace_stack_size).get();