Re: [PATCH] x86: General protection fault after STR (32 bit systems only)

Denys Vlasenko
2015-06-12T22:45:53Z

On Fri, Jun 12, 2015 at 5:48 PM, Brian Gerst <brgerst@gmail.com> wrote:
> If you follow the convoluted flow of the calls in this file,
> ...

Speaking of which. It is indeed quite bad.

For one, saved_eip is only ever set to point to ret_point:

ENTRY(saved_eip) .long 0
...

movl $ret_point, saved_eip

and it has just a single user, where an indirect jump
through it is performed:

# jump to place where we left off
movl saved_eip, %eax
jmp *%eax

No comments why it is so.

All this seems to be equivalent to trivial

# jump to place where we left off
jmp ret_point

Am I missing something?