lkml.org 
[lkml]   [2014]   [Apr]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC 14/16] kgr: x86: refuse to build without fentry support
    Date
    From: Jiri Kosina <jkosina@suse.cz>

    The only reliable way for function redirection through ftrace_ops (when
    modifying pt_regs->rip in the handler) is fentry.

    The alternative -- mcount -- is problematic in several ways. Namely the
    caller's function prologue (that has already been executed by the time
    mcount callsite has been reached) is not known to the callee, and can be
    completely incompatible to the calee, resulting in a havoc on return from
    the function.

    fentry doesn't suffer from this, as it's located at the very beginning of
    the function, even before prologue has been executed, and therefore callee
    is the owner of both function prologue and epilogue.

    Fixing mcount to properly fix everything up would be non-trivial, and
    Steven is not in favor of doing that.

    Both kGraft and upstream kernel (patch to be submitted) should error out
    when this unsupported and non-working configuration is detected.

    According to Michael Matz, the -mfentry gcc option is x86 specific. Other
    architectures insert the respective profile calls before the prologue by
    default.

    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    ---
    arch/x86/include/asm/kgr.h | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/arch/x86/include/asm/kgr.h b/arch/x86/include/asm/kgr.h
    index f36661681b33..8a3819886e4b 100644
    --- a/arch/x86/include/asm/kgr.h
    +++ b/arch/x86/include/asm/kgr.h
    @@ -1,6 +1,10 @@
    #ifndef ASM_KGR_H
    #define ASM_KGR_H

    +#ifndef CC_USING_FENTRY
    +#error Your compiler has to support -mfentry for kGraft to work on x86
    +#endif
    +
    #include <linux/linkage.h>

    /*
    --
    1.9.2


    \
     
     \ /
      Last update: 2014-04-30 16:41    [W:4.305 / U:0.924 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site