From 3d60169ef4461d949f33fbf1f3825b23484203e2 Mon Sep 17 00:00:00 2001 From: Peter Wemm Date: Sun, 23 Mar 2008 22:44:56 +0000 Subject: [PATCH] Protect the setting of the fsbase/gsbase MSR registers and the pcb_[fg]sbase values with a critical section, like the rest of the kernel. --- sys/amd64/ia32/ia32_signal.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c index a6d82a447cd..5849d0d8604 100644 --- a/sys/amd64/ia32/ia32_signal.c +++ b/sys/amd64/ia32/ia32_signal.c @@ -715,10 +715,12 @@ ia32_setregs(td, entry, stack, ps_strings) struct trapframe *regs = td->td_frame; struct pcb *pcb = td->td_pcb; + critical_enter(); wrmsr(MSR_FSBASE, 0); wrmsr(MSR_KGSBASE, 0); /* User value while we're in the kernel */ pcb->pcb_fsbase = 0; pcb->pcb_gsbase = 0; + critical_exit(); load_ds(_udatasel); load_es(_udatasel); load_fs(_udatasel);