diff --git a/sys/arm64/arm64/unwind.c b/sys/arm64/arm64/unwind.c --- a/sys/arm64/arm64/unwind.c +++ b/sys/arm64/arm64/unwind.c @@ -41,7 +41,8 @@ fp = frame->fp; - if (!kstack_contains(td, fp, sizeof(uintptr_t) * 2)) + if (!__is_aligned(fp, sizeof(fp)) || + !kstack_contains(td, fp, sizeof(fp) * 2)) return (false); /* FP to previous frame (X29) */ diff --git a/sys/riscv/riscv/unwind.c b/sys/riscv/riscv/unwind.c --- a/sys/riscv/riscv/unwind.c +++ b/sys/riscv/riscv/unwind.c @@ -47,7 +47,8 @@ fp = frame->fp; - if (!kstack_contains(td, fp - sizeof(fp) * 2, sizeof(fp) * 2)) + if (!__is_aligned(fp, sizeof(fp)) || + !kstack_contains(td, fp - sizeof(fp) * 2, sizeof(fp) * 2)) return (false); frame->sp = fp;