diff options
author | 2020-09-24 17:57:57 +0000 | |
---|---|---|
committer | 2020-09-24 17:57:57 +0000 | |
commit | 0a5d27020d7db961873b9c714f1666ae128fc9aa (patch) | |
tree | a8e28fb12060637e1261aba618d468f95716c179 | |
parent | Only perform uvm_map_inentry() checks for PROC_SP for userland pagefaults. (diff) | |
download | wireguard-openbsd-0a5d27020d7db961873b9c714f1666ae128fc9aa.tar.xz wireguard-openbsd-0a5d27020d7db961873b9c714f1666ae128fc9aa.zip |
mi_ast() needs curcpu()->ci_want_resched rather than ci->ci_want_resched,
because refreshcreds() may sleep in pool_put(). Subtle isn't it...
ok visa kettenis
-rw-r--r-- | sys/arch/mips64/mips64/trap.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sys/arch/mips64/mips64/trap.c b/sys/arch/mips64/mips64/trap.c index 42a1827b845..09e18c44e44 100644 --- a/sys/arch/mips64/mips64/trap.c +++ b/sys/arch/mips64/mips64/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.147 2020/09/24 17:54:30 deraadt Exp $ */ +/* $OpenBSD: trap.c,v 1.148 2020/09/24 17:57:57 deraadt Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -147,8 +147,7 @@ int process_sstep(struct proc *, int); void ast(void) { - struct cpu_info *ci = curcpu(); - struct proc *p = ci->ci_curproc; + struct proc *p = curproc; p->p_md.md_astpending = 0; @@ -161,7 +160,7 @@ ast(void) refreshcreds(p); atomic_inc_int(&uvmexp.softs); - mi_ast(p, ci->ci_want_resched); + mi_ast(p, curcpu()->ci_want_resched); userret(p); } |