summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2015-08-24 17:28:19 +0000
committerandrew <andrew@FreeBSD.org>2015-08-24 17:28:19 +0000
commitd80880058c07a394b3802bcb44105235a40e2f99 (patch)
treef965924a17130889346a888a5d1a400ca9469ea4
parent56efeb95675425946db45b35bbacd54fb76f6c2e (diff)
downloadFreeBSD-src-d80880058c07a394b3802bcb44105235a40e2f99.zip
FreeBSD-src-d80880058c07a394b3802bcb44105235a40e2f99.tar.gz
Check the frame pointer is within the kernel before accessing it.
-rw-r--r--sys/arm64/arm64/unwind.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/arm64/arm64/unwind.c b/sys/arm64/arm64/unwind.c
index 13e0b54..bef9c6f 100644
--- a/sys/arm64/arm64/unwind.c
+++ b/sys/arm64/arm64/unwind.c
@@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <machine/stack.h>
+#include <machine/vmparam.h>
int
unwind_frame(struct unwind_state *frame)
@@ -39,7 +40,7 @@ unwind_frame(struct unwind_state *frame)
uint64_t fp;
fp = frame->fp;
- if (fp == 0)
+ if (!INKERNEL(fp))
return (-1);
frame->sp = fp + 0x10;
OpenPOWER on IntegriCloud