lkml.org 
[lkml]   [2019]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [RFC][PATCH 1/2] x86: Allow breakpoints to emulate call functions
On Thu, May 2, 2019 at 1:22 PM Peter Zijlstra <peterz@infradead.org> wrote:
>
> Something like so; it boots; but I could've made some horrible mistake
> (again).

This actually looks much better to me.

Maybe it's more lines (I didn't check), but it's a lot simpler in that
now the magic of the int3 stack doesn't get exposed to anything else.

We *could* also make this kernel-mode-only do_int3() be a special
function, and do something like

# args: pt_regs pointer (no error code for int3)
movl %esp,%eax
# allocate a bit of extra room on the stack, so that
'kernel_int3' can move the pt_regs
subl $8,%esp
call kernel_int3
movl %eax,%esp

and not do any stack switching magic in the asm code AT ALL. We'd do

struct pt_regs *kernel_int3(struct pt_regs *regs)
{
..
return regs;
}

and now you the rule for call emulation ends up being that you need to
"memmove()" the ptregs up and down properly, and return the new
pt_regs pointer.

Hmm? That would simplify the asm code further, but some people might
find it objectionable?

Linus

\
 
 \ /
  Last update: 2019-05-02 22:56    [W:0.168 / U:0.848 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site