From 69b3f4f99de389a87f62062cede1d217f2ead481 Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 22 Aug 2016 18:19:46 +0000 Subject: [PATCH] Ensure map is valid, even before userland exists and the fault address register points to an address in the userland range. Obtained from: ABT Systems Ltd MFC after: 1 week Sponsored by: the FreeBSD Foundation --- sys/arm64/arm64/trap.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c index d9367dfcf742..a126d04582d6 100644 --- a/sys/arm64/arm64/trap.c +++ b/sys/arm64/arm64/trap.c @@ -184,10 +184,13 @@ data_abort(struct trapframe *frame, uint64_t esr, uint64_t far, int lower) map = &p->p_vmspace->vm_map; else { /* The top bit tells us which range to use */ - if ((far >> 63) == 1) + if ((far >> 63) == 1) { map = kernel_map; - else + } else { map = &p->p_vmspace->vm_map; + if (map == NULL) + map = kernel_map; + } } if (pmap_fault(map->pmap, esr, far) == KERN_SUCCESS)