Re: [PATCH] x86-64: espfix for 64-bit mode *PROTOTYPE*

Andrew Lutomirski
2014-04-22T16:33:25Z

On Tue, Apr 22, 2014 at 9:10 AM, H. Peter Anvin <hpa@zytor.com> wrote:
> Honestly, guys... you're painting the bikeshed at the moment.
>
> Initialization is the easiest bit of all this code. The tricky part is
> *the rest of the code*, i.e. the stuff in entry_64.S.

That's because the initialization code is much simpler, so it's easy
to pick on :) Sorry.

For the espfix_adjust_stack thing, when can it actually need to do
anything? irqs should be off, I think, and MCE, NMI, and debug
exceptions use ist, so that leaves just #SS and #GP, I think. How can
those actually occur? Is there a way to trigger them deliberately
from userspace? Why do you have three espfix_adjust_stack

What happens on the IST entries? If I've read your patch right,
you're still switching back to the normal stack, which looks
questionable.

Also, if you want to same some register abuse on each exception entry,
could you check the saved RIP instead of the current RSP? I.e. use
the test instruction with offset(%rsp)? Maybe there are multiple
possible values, though, and just testing some bits doesn't help.

--Andy