Date: Tue, 2 Sep 2008 17:52:11 +0000 (UTC) From: Konstantin Belousov <kib@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/amd64/amd64 cpu_switch.S machdep.c src/sys/amd64/ia32 ia32_signal.c Message-ID: <200809021752.m82HqTFW051447@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
kib 2008-09-02 17:52:11 UTC
FreeBSD src repository
Modified files:
sys/amd64/amd64 cpu_switch.S machdep.c
sys/amd64/ia32 ia32_signal.c
Log:
SVN rev 182684 on 2008-09-02 17:52:11Z by kib
- When executing FreeBSD/amd64 binaries from FreeBSD/i386 or Linux/i386
processes, clear PCB_32BIT and PCB_GS32BIT bits [1].
- Reread the fs and gs bases from the msr unconditionally, not believing
the values in pcb_fsbase and pcb_gsbase, since usermode may reload
segment registers, invalidating the cache. [2].
Both problems resulted in the wrong fs base, causing wrong tls pointer
be dereferenced in the usermode.
Reported and tested by: Vyacheslav Bocharov <adeepv at gmail com> [1]
Reported by: Bernd Walter <ticsoat cicely7 cicely de>,
Artem Belevich <fbsdlist at src cx>[2]
Reviewed by: peter
MFC after: 3 days
Revision Changes Path
1.163 +18 -2 src/sys/amd64/amd64/cpu_switch.S
1.688 +1 -0 src/sys/amd64/amd64/machdep.c
1.19 +1 -0 src/sys/amd64/ia32/ia32_signal.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809021752.m82HqTFW051447>
