lkml.org 
[lkml]   [2019]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 3/4] x86/ftrace: make ftrace_int3_handler() not to skip fops invocation
    On Mon, Apr 29, 2019 at 03:06:30PM -0700, Linus Torvalds wrote:
    > On Mon, Apr 29, 2019 at 11:57 AM Andy Lutomirski <luto@kernel.org> wrote:
    > > >
    > > > Otherwise you could never trust the whole sti shadow thing - and it very much is part of the architecture.
    > >
    > > Is this documented somewhere?
    >
    > Btw, if you really don't trust the sti shadow despite it going all the
    > way back to the 8086, then you could instead make the irqoff code do
    >
    > push %gs:bp_call_return
    > push %gs:bp_call_target
    > sti
    > ret

    This variant cures the RETPOLINE complaint; due to there not actually
    being an indirect jump anymore. And it cures the sibling call complaint,
    but trades it for "return with modified stack frame".

    Something like so is clean:

    +extern asmlinkage void emulate_call_irqon(void);
    +extern asmlinkage void emulate_call_irqoff(void);
    +
    +asm(
    + ".text\n"
    + ".global emulate_call_irqoff\n"
    + ".type emulate_call_irqoff, @function\n"
    + "emulate_call_irqoff:\n\t"
    + "push %gs:bp_call_return\n\t"
    + "push %gs:bp_call_target\n\t"
    + "sti\n\t"
    + "ret\n"
    + ".size emulate_call_irqoff, .-emulate_call_irqoff\n"
    +
    + ".global emulate_call_irqon\n"
    + ".type emulate_call_irqon, @function\n"
    + "emulate_call_irqon:\n\t"
    + "push %gs:bp_call_return\n\t"
    + "push %gs:bp_call_target\n\t"
    + "ret\n"
    + ".size emulate_call_irqon, .-emulate_call_irqon\n"
    + ".previous\n");
    +
    +STACK_FRAME_NON_STANDARD(emulate_call_irqoff);
    +STACK_FRAME_NON_STANDARD(emulate_call_irqon);

    \
     
     \ /
      Last update: 2019-04-30 13:20    [W:2.789 / U:0.156 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site