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>