summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2001-03-04 23:29:23 +0000
committerdfr <dfr@FreeBSD.org>2001-03-04 23:29:23 +0000
commit430eceb8a5d406aec5bfa59f0e169302cc409726 (patch)
tree7b75cc4c7549307b4740449e50e656ae5b09e1b8
parent6d34e037b24884d9fe193e69cd384ff8b341bc5a (diff)
downloadFreeBSD-src-430eceb8a5d406aec5bfa59f0e169302cc409726.zip
FreeBSD-src-430eceb8a5d406aec5bfa59f0e169302cc409726.tar.gz
Disable interrupts while sanity checking the owner of the floating point
state. It is possible that we could be preempted part way through the check.
-rw-r--r--sys/alpha/alpha/machdep.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c
index 0b79c68..7238cd1 100644
--- a/sys/alpha/alpha/machdep.c
+++ b/sys/alpha/alpha/machdep.c
@@ -2100,9 +2100,14 @@ alpha_fpstate_check(struct proc *p)
* For SMP, we should check the fpcurproc of each cpu.
*/
#ifndef SMP
+ int s;
+
+ s = save_intr();
+ disable_intr();
if (p->p_addr->u_pcb.pcb_hw.apcb_flags & ALPHA_PCB_FLAGS_FEN)
if (p != PCPU_GET(fpcurproc))
panic("alpha_check_fpcurproc: bogus");
+ restore_intr(s);
#endif
}
OpenPOWER on IntegriCloud