Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1345647
| From | tip-bot for Josh Poimboeuf <tipbot@zytor.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [tip:core/objtool] bpf: Mark __bpf_prog_run() stack frame as non-standard |
| Date | 2016-02-29 12:10 +0100 |
| Message-ID | <r7tSa-2et-3@gated-at.bofh.it> (permalink) |
| References | <r7nD5-5hw-31@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
Commit-ID: 39853cc0cdcf1b11f00f7f81e2f515a4d68ed209 Gitweb: http://git.kernel.org/tip/39853cc0cdcf1b11f00f7f81e2f515a4d68ed209 Author: Josh Poimboeuf <jpoimboe@redhat.com> AuthorDate: Sun, 28 Feb 2016 22:22:37 -0600 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Mon, 29 Feb 2016 08:35:11 +0100 bpf: Mark __bpf_prog_run() stack frame as non-standard objtool reports the following false positive warnings: kernel/bpf/core.o: warning: objtool: __bpf_prog_run()+0x5c: sibling call from callable instruction with changed frame pointer kernel/bpf/core.o: warning: objtool: __bpf_prog_run()+0x60: function has unreachable instruction kernel/bpf/core.o: warning: objtool: __bpf_prog_run()+0x64: function has unreachable instruction [...] It's confused by the following dynamic jump instruction in __bpf_prog_run():: jmp *(%r12,%rax,8) which corresponds to the following line in the C code: goto *jumptable[insn->code]; There's no way for objtool to deterministically find all possible branch targets for a dynamic jump, so it can't verify this code. In this case the jumps all stay within the function, and there's nothing unusual going on related to the stack, so we can whitelist the function. Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Acked-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Alexei Starovoitov <ast@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Lutomirski <luto@kernel.org> 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: Jiri Slaby <jslaby@suse.cz> Cc: Linus Torvalds <torvalds@linux-foundation.org> 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 Cc: netdev@vger.kernel.org Link: http://lkml.kernel.org/r/b90e6bf3fdbfb5c4cc1b164b965502e53cf48935.1456719558.git.jpoimboe@redhat.com Signed-off-by: Ingo Molnar <mingo@kernel.org> --- kernel/bpf/core.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kernel/bpf/core.c b/kernel/bpf/core.c index 972d9a8..be0abf6 100644 --- a/kernel/bpf/core.c +++ b/kernel/bpf/core.c @@ -27,6 +27,7 @@ #include <linux/random.h> #include <linux/moduleloader.h> #include <linux/bpf.h> +#include <linux/frame.h> #include <asm/unaligned.h> @@ -649,6 +650,7 @@ load_byte: WARN_RATELIMIT(1, "unknown opcode %02x\n", insn->code); return 0; } +STACK_FRAME_NON_STANDARD(__bpf_prog_run); /* jump table */ bool bpf_prog_array_compatible(struct bpf_array *array, const struct bpf_prog *fp)
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll 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