Allow probes to kernel addresses that generate access errors not panic the machine.

This commit is contained in:
eeh 2001-06-21 00:10:49 +00:00
parent bceb1fab42
commit ede617e6dc
1 changed files with 3 additions and 3 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: trap.c,v 1.67 2001/06/07 15:31:16 mrg Exp $ */ /* $NetBSD: trap.c,v 1.68 2001/06/21 00:10:49 eeh Exp $ */
/* /*
* Copyright (c) 1996 * Copyright (c) 1996
@ -1287,10 +1287,12 @@ data_access_error(type, sfva, sfsr, afva, afsr, tf)
* then things are really bizarre, and we treat it as a hard * then things are really bizarre, and we treat it as a hard
* error and pass it on to memerr4m. * error and pass it on to memerr4m.
*/ */
onfault = p->p_addr ? (long)p->p_addr->u_pcb.pcb_onfault : 0;
if ((afsr) != 0 || if ((afsr) != 0 ||
(type == T_DATAFAULT && !(sfsr & SFSR_FV))) { (type == T_DATAFAULT && !(sfsr & SFSR_FV))) {
printf("data memory error type %x sfsr=%lx sfva=%lx afsr=%lx afva=%lx tf=%p\n", printf("data memory error type %x sfsr=%lx sfva=%lx afsr=%lx afva=%lx tf=%p\n",
type, sfsr, sfva, afsr, afva, tf); type, sfsr, sfva, afsr, afva, tf);
if (onfault) goto kfault;
if (tstate & (PSTATE_PRIV<<TSTATE_PSTATE_SHIFT)) if (tstate & (PSTATE_PRIV<<TSTATE_PSTATE_SHIFT))
panic("trap: memory error"); panic("trap: memory error");
@ -1416,8 +1418,6 @@ data_access_error(type, sfva, sfsr, afva, afsr, tf)
fault: fault:
if (tstate & (PSTATE_PRIV<<TSTATE_PSTATE_SHIFT)) { if (tstate & (PSTATE_PRIV<<TSTATE_PSTATE_SHIFT)) {
kfault: kfault:
onfault = p->p_addr ?
(long)p->p_addr->u_pcb.pcb_onfault : 0;
if (!onfault) { if (!onfault) {
extern int trap_trace_dis; extern int trap_trace_dis;
char buf[768]; char buf[768];