Skip to content

Commit 41c5f0a

Browse files
committed
Create a guard page for the kernel stack
1 parent 9ac6744 commit 41c5f0a

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

common/src/lib.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff 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);

0 commit comments

Comments
 (0)