Fix two bugs in the fault handler for copy{in,out} and friends.
First, it was failing to reset the PCB's pcb_onfault member to NULL. Under some really obscure circumstances this might cause a wild jump within the kernel when a panic would otherwise occur. Second, the handler was loading the GP register needlessly and with an incorrect value. Reviewed by: Doug Rabson <dfr> Approved by: Jordan Hubbard <jkh>
This commit is contained in:
parent
a95c122521
commit
7e4977c94e
@ -555,7 +555,9 @@ NESTED(copyout, 3, 16, ra, 0, 0)
|
||||
END(copyout)
|
||||
|
||||
LEAF(copyerr, 0)
|
||||
LDGP(pv)
|
||||
ldq t0, curproc
|
||||
ldq t0, P_ADDR(t0)
|
||||
stq zero, U_PCB_ONFAULT(t0) /* reset fault handler. */
|
||||
ldq ra, (16-8)(sp) /* restore ra. */
|
||||
lda sp, 16(sp) /* kill stack frame. */
|
||||
ldiq v0, EFAULT /* return EFAULT. */
|
||||
|
Loading…
Reference in New Issue
Block a user