File tree Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Expand file tree Collapse file tree 1 file changed +11
-6
lines changed Original file line number Diff line number Diff line change @@ -204,12 +204,17 @@ where
204204 . expect ( "no entry point" ) ;
205205 log:: info!( "Entry point at: {:#x}" , entry_point. as_u64( ) ) ;
206206 // create a stack
207- let stack_start_addr = mapping_addr (
208- config. mappings . kernel_stack ,
209- config. kernel_stack_size ,
210- 16 ,
211- & mut used_entries,
212- ) ;
207+ let stack_start_addr = {
208+ let guard_page_start = mapping_addr (
209+ config. mappings . kernel_stack ,
210+ // allocate an additional page as a guard page
211+ Size4KiB :: SIZE + config. kernel_stack_size ,
212+ // we need page-alignment because we want a guard page directly below the stack
213+ Size4KiB :: SIZE ,
214+ & mut used_entries,
215+ ) ;
216+ guard_page_start + Size4KiB :: SIZE
217+ } ;
213218 let stack_end_addr = stack_start_addr + config. kernel_stack_size ;
214219
215220 let stack_start: Page = Page :: containing_address ( stack_start_addr) ;
You can’t perform that action at this time.
0 commit comments