x86: Fixes TLS bug causing kernel page faults
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 3 Mar 2010 19:51:42 +0000 (11:51 -0800)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:35:39 +0000 (17:35 -0700)
commit56c119f36ddfeed84b96ebacb8eaf6dc4a8e91da
treec363fe53d07c6914bc44127370b2510499b2b08b
parent7ce7251416bc67b50bbbaed6aa8b39d67f5c662a
x86: Fixes TLS bug causing kernel page faults

When loading the gs register (or any segmentation register), the
hardware will fill in the internal segmentation registers by looking up
the segment, which can page fault.  The kernel was doing this for
unabandoned, yet unmapped, LDTs from old processes when it tried to
return from an interrupt.

Note that the current TLS implementation is vulnerable to a malicious
process mucking with the LDT.
kern/arch/i686/process.c
kern/arch/i686/trap.c
kern/arch/sparc/process.c
kern/include/process.h
kern/src/process.c