---
 i386/i386/pcb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/i386/i386/pcb.c b/i386/i386/pcb.c
index 21f9e06a..7098bf33 100644
--- a/i386/i386/pcb.c
+++ b/i386/i386/pcb.c
@@ -230,7 +230,9 @@ void switch_ktss(pcb_t pcb)
 
 #if defined(__x86_64__) && !defined(USER32)
        wrmsr(MSR_REG_FSBASE, pcb->ims.sbs.fsbase);
-       wrmsr(MSR_REG_GSBASE, pcb->ims.sbs.gsbase);
+       /* Dont load zero into gs base, could be a kernel thread */
+       if (pcb->ims.sbs.gsbase != 0)
+               wrmsr(MSR_REG_GSBASE, pcb->ims.sbs.gsbase);
 #endif
 
        db_load_context(pcb);
-- 
2.45.2



Reply via email to