diff options
author | 2002-02-22 19:25:17 +0000 | |
---|---|---|
committer | 2002-02-22 19:25:17 +0000 | |
commit | 2812ef3def17bfdde8e32f75a47753f5ee25884f (patch) | |
tree | 65bd3d60892b9fd0602d473e5302748352b89645 | |
parent | include a siginfo_t with ktrace PSIG information, so that kdump can print (diff) | |
download | wireguard-openbsd-2812ef3def17bfdde8e32f75a47753f5ee25884f.tar.xz wireguard-openbsd-2812ef3def17bfdde8e32f75a47753f5ee25884f.zip |
a few sigval_ptr cases were returning pc instead of fault address
-rw-r--r-- | sys/arch/sparc64/sparc64/trap.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/arch/sparc64/sparc64/trap.c b/sys/arch/sparc64/sparc64/trap.c index dbe44cd5de9..5adfe3c23f2 100644 --- a/sys/arch/sparc64/sparc64/trap.c +++ b/sys/arch/sparc64/sparc64/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.15 2002/01/23 15:19:10 jason Exp $ */ +/* $OpenBSD: trap.c,v 1.16 2002/02/22 19:25:17 deraadt Exp $ */ /* $NetBSD: trap.c,v 1.73 2001/08/09 01:03:01 eeh Exp $ */ /* @@ -617,6 +617,7 @@ badtrap: ADVANCE; break; } + /* XXX sv.sival_ptr should be the fault address! */ trapsignal(p, SIGBUS, 0, BUS_ADRALN, sv); /* XXX code?? */ break; @@ -785,7 +786,7 @@ data_access_fault(tf, type, pc, addr, sfva, sfsr) u_quad_t sticks; union sigval sv; - sv.sival_ptr = (void *)pc; + sv.sival_ptr = (void *)addr; uvmexp.traps++; if ((p = curproc) == NULL) /* safety check */ @@ -1051,7 +1052,6 @@ text_access_fault(tf, type, pc, sfsr) panic("kernel fault"); /* NOTREACHED */ } - sv.sival_ptr = (void *)va; trapsignal(p, SIGSEGV, access_type, SEGV_MAPERR, sv); } if ((tstate & TSTATE_PRIV) == 0) { @@ -1161,7 +1161,6 @@ text_access_error(tf, type, pc, sfsr, afva, afsr) panic("kernel fault"); /* NOTREACHED */ } - sv.sival_ptr = (void *)va; trapsignal(p, SIGSEGV, access_type, SEGV_MAPERR, sv); } out: |