Messages in this thread | | | Subject | Re: [PATCH RFC v2 4/6] x86: Disable PTI on compatibility mode | From | Andrew Cooper <> | Date | Fri, 16 Feb 2018 00:35:28 +0000 |
| |
On 16/02/2018 00:08, Linus Torvalds wrote: > On Thu, Feb 15, 2018 at 3:29 PM, Andy Lutomirski <luto@kernel.org> wrote: >> Linus, how would you feel about, by default, preventing 64-bit >> programs from long-jumping to __USER32_CS and vice versa? > How? It's a standard GDT entry. Are you going to start switching the > GDT around every context switch? > > I *thought* that user space can just do a far jump on its own. But > it's so long since I had to care that I may have forgotten all the > requirements for going between "compatibility mode" and real long > mode.
Yes - it is just a straight far jump to switch between compat and long mode.
A evil^W cunning programmer can use the 286 world view and disable segments by clearing the present bit to yield #NP[sel] on use, which is liable to be rather faster than LGDT on a context switch.
Alternatively, set both the L and D (code segments only), or playing with DPL/type can all yield #GP[sel] on use, but these probably aren't as good options.
~Andrew
| |