amd64: Use a larger boot stack

With sanitizers enabled, it becomes possible to overflow the stack when
only a single page is used.  Follow arm64's example and use the default
kernel stack size instead.  This is a bit wasteful, but without a guard
page, overflow merely corrupts adjacent .bss entries and is thus
difficult to debug.

Note, with a GENERIC kernel we already consume over half of the
available boot stack space, see the review for an example.

Reviewed by:	kib
Reported by:	Jenkins
MFC after:	2 weeks
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D41166
This commit is contained in:
Mark Johnston 2023-07-24 18:47:42 -04:00
parent 5b353925ff
commit 789df254cc
2 changed files with 3 additions and 2 deletions

View file

@ -116,6 +116,7 @@ ASSYM(KERNBASE, KERNBASE);
ASSYM(KERNLOAD, KERNLOAD);
ASSYM(DMAP_MIN_ADDRESS, DMAP_MIN_ADDRESS);
ASSYM(DMAP_MAX_ADDRESS, DMAP_MAX_ADDRESS);
ASSYM(KSTACK_PAGES, KSTACK_PAGES);
ASSYM(PCB_R15, offsetof(struct pcb, pcb_r15));
ASSYM(PCB_R14, offsetof(struct pcb, pcb_r14));

View file

@ -48,7 +48,7 @@
.set dmapbase,DMAP_MIN_ADDRESS
.set dmapend,DMAP_MAX_ADDRESS
#define BOOTSTACK_SIZE 4096
#define BOOTSTACK_SIZE (PAGE_SIZE * KSTACK_PAGES)
.text
/**********************************************************************
@ -148,7 +148,7 @@ ENTRY(la57_trampoline_gdt)
ENTRY(la57_trampoline_end)
.bss
ALIGN_DATA /* just to be sure */
.p2align PAGE_SHIFT
.globl bootstack
.space BOOTSTACK_SIZE /* space for bootstack - temporary stack */
bootstack: