Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1345664

[tip:core/objtool] x86/kprobes: Mark kretprobe_trampoline() stack frame as non-standard

From tip-bot for Josh Poimboeuf <tipbot@zytor.com>
Newsgroups linux.kernel
Subject [tip:core/objtool] x86/kprobes: Mark kretprobe_trampoline() stack frame as non-standard
Date 2016-02-29 12:10 +0100
Message-ID <r7tSb-2et-43@gated-at.bofh.it> (permalink)
References <r7nD5-5hw-21@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Commit-ID:  87aaff2ae09036cf699fde20dfd52ce7d3c8eabe
Gitweb:     http://git.kernel.org/tip/87aaff2ae09036cf699fde20dfd52ce7d3c8eabe
Author:     Josh Poimboeuf <jpoimboe@redhat.com>
AuthorDate: Sun, 28 Feb 2016 22:22:40 -0600
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Mon, 29 Feb 2016 08:35:12 +0100

x86/kprobes: Mark kretprobe_trampoline() stack frame as non-standard

objtool reports the following warning for kretprobe_trampoline():

  arch/x86/kernel/kprobes/core.o: warning: objtool: kretprobe_trampoline()+0x20: call without frame pointer save/setup

kretprobes are a special case where the stack is intentionally wrong.
The return address isn't known at the beginning of the trampoline, so
the stack frame can't be set up properly before it calls
trampoline_handler().

Because kretprobe handlers don't sleep, the frame pointer doesn't *have*
to be accurate in the trampoline.  So it's ok to tell objtool to ignore
it.  This results in no actual changes to the generated code.

Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Bernd Petrovitsch <bernd@petrovitsch.priv.at>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Chris J Arges <chris.j.arges@canonical.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Jiri Slaby <jslaby@suse.cz>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Pedro Alves <palves@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: live-patching@vger.kernel.org
Link: http://lkml.kernel.org/r/7eaf37de52456ff822ffc86b928edb5d48a40ef1.1456719558.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/kprobes/core.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
index 48acaac..ae703ac 100644
--- a/arch/x86/kernel/kprobes/core.c
+++ b/arch/x86/kernel/kprobes/core.c
@@ -49,6 +49,7 @@
 #include <linux/kdebug.h>
 #include <linux/kallsyms.h>
 #include <linux/ftrace.h>
+#include <linux/frame.h>
 
 #include <asm/cacheflush.h>
 #include <asm/desc.h>
@@ -703,6 +704,7 @@ asm(
 	".size kretprobe_trampoline, .-kretprobe_trampoline\n"
 );
 NOKPROBE_SYMBOL(kretprobe_trampoline);
+STACK_FRAME_NON_STANDARD(kretprobe_trampoline);
 
 /*
  * Called from kretprobe_trampoline

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v19 00/10] Compile-time stack metadata validation Josh Poimboeuf <jpoimboe@redhat.com> - 2016-02-29 05:30 +0100
  [PATCH v19 06/10] sched: always inline context_switch() Josh Poimboeuf <jpoimboe@redhat.com> - 2016-02-29 05:30 +0100
    [tip:core/objtool] sched: Always inline context_switch() tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-02-29 12:10 +0100
  [PATCH v19 09/10] objtool: Add CONFIG_STACK_VALIDATION option Josh Poimboeuf <jpoimboe@redhat.com> - 2016-02-29 05:30 +0100
    [tip:core/objtool] objtool: Add CONFIG_STACK_VALIDATION option tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-02-29 12:10 +0100
      Re: [tip:core/objtool] objtool: Add CONFIG_STACK_VALIDATION option Sebastian Andrzej Siewior <sebastian@breakpoint.cc> - 2016-03-03 15:20 +0100
        Re: [tip:core/objtool] objtool: Add CONFIG_STACK_VALIDATION option Josh Poimboeuf <jpoimboe@redhat.com> - 2016-03-03 16:00 +0100
  [PATCH v19 01/10] objtool: Mark non-standard files and directories Josh Poimboeuf <jpoimboe@redhat.com> - 2016-02-29 05:30 +0100
    [tip:core/objtool] objtool: Mark non-standard object files and  directories tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-02-29 12:00 +0100
  [PATCH v19 07/10] x86/kprobes: Mark kretprobe_trampoline() stack frame as non-standard Josh Poimboeuf <jpoimboe@redhat.com> - 2016-02-29 05:30 +0100
    [tip:core/objtool] x86/kprobes: Mark kretprobe_trampoline() stack  frame as non-standard tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-02-29 12:10 +0100
  [PATCH v19 10/10] objtool: Enable stack metadata validation on x86_64 Josh Poimboeuf <jpoimboe@redhat.com> - 2016-02-29 05:30 +0100
    [tip:core/objtool] objtool: Enable stack metadata validation on  64-bit x86 tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-02-29 12:10 +0100
  [PATCH v19 04/10] bpf: Mark __bpf_prog_run() stack frame as non-standard Josh Poimboeuf <jpoimboe@redhat.com> - 2016-02-29 05:30 +0100
    [tip:core/objtool] bpf: Mark __bpf_prog_run() stack frame as  non-standard tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-02-29 12:10 +0100
  [PATCH v19 03/10] x86/xen: Mark xen_cpuid() stack frame as non-standard Josh Poimboeuf <jpoimboe@redhat.com> - 2016-02-29 05:30 +0100
    [tip:core/objtool] x86/xen: Mark xen_cpuid() stack frame as  non-standard tip-bot for Josh Poimboeuf <tipbot@zytor.com> - 2016-02-29 12:10 +0100

csiph-web