diff options
author | Brooks Davis <brooks@FreeBSD.org> | 2023-01-17 16:35:08 +0000 |
---|---|---|
committer | Brooks Davis <brooks@FreeBSD.org> | 2023-01-17 16:37:09 +0000 |
commit | e1b610f76caa09bbc3910477da878ea5078c6569 (patch) | |
tree | 1e7a87a1f60811a6f8c9f7c7b280d01202f7fa73 | |
parent | c968598479917f52022b86d0089a9835ddcf2799 (diff) | |
download | src-e1b610f76caa09bbc3910477da878ea5078c6569.tar.gz src-e1b610f76caa09bbc3910477da878ea5078c6569.zip |
arm64: Fix thread0.td_kstack_pages init
Commit 86a994d6537d7b5e1efb1019e466d86a688fd570 initialized
thread0.td_kstack_pages to KSTACK_PAGES. Due to the lack of an
include of opt_kstack_pages.h it used the fallback value of 4 from
machine/param.h. This meant that increasing KSTACK_PAGES in the kernel
config resulted in a panic in _epoch_enter_preempt as the following
assertion was false during network stack setup:
MPASS((vm_offset_t)et >= td->td_kstack &&
(vm_offset_t)et + sizeof(struct epoch_tracker) <=
td->td_kstack + td->td_kstack_pages * PAGE_SIZE);
Switch to initializing with kstack_pages following other architectures.
Reviewed by: imp, markj
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D38048
-rw-r--r-- | sys/arm64/arm64/machdep.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/arm64/arm64/machdep.c b/sys/arm64/arm64/machdep.c index b099980634f6..2eaf4ef14390 100644 --- a/sys/arm64/arm64/machdep.c +++ b/sys/arm64/arm64/machdep.c @@ -365,7 +365,7 @@ init_proc0(vm_offset_t kstack) proc_linkup0(&proc0, &thread0); thread0.td_kstack = kstack; - thread0.td_kstack_pages = KSTACK_PAGES; + thread0.td_kstack_pages = kstack_pages; #if defined(PERTHREAD_SSP) thread0.td_md.md_canary = boot_canary; #endif |