1.1 --- a/libexec/lib/src/process_creating.cc Sat Mar 02 23:51:22 2024 +0100
1.2 +++ b/libexec/lib/src/process_creating.cc Sun Mar 03 00:12:41 2024 +0100
1.3 @@ -59,7 +59,11 @@
1.4 if (err)
1.5 return err;
1.6
1.7 - _rm_stack = new ExplicitSegment(Utcb_area_start - initial_stack_size, initial_stack_size, L4_FPAGE_RW);
1.8 + /* Introduce a page as a barrier between the UTCB and the stack. */
1.9 +
1.10 + _rm_stack = new ExplicitSegment(Utcb_area_start - L4_PAGESIZE -
1.11 + initial_stack_size, initial_stack_size, L4_FPAGE_RW);
1.12 +
1.13 return _rm_stack->allocate(true);
1.14 }
1.15
1.16 @@ -74,7 +78,12 @@
1.17 if (err)
1.18 return err;
1.19
1.20 - _program_stack = new ExplicitSegment(Utcb_area_start - initial_stack_size * 2, initial_stack_size, L4_FPAGE_RW);
1.21 + /* Introduce a page as a barrier between the program stack and the region
1.22 + mapper stack. */
1.23 +
1.24 + _program_stack = new ExplicitSegment(Utcb_area_start - L4_PAGESIZE * 2 -
1.25 + initial_stack_size * 2, initial_stack_size, L4_FPAGE_RW);
1.26 +
1.27 return _program_stack->allocate(true);
1.28 }
1.29