From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753836AbcB2LBH (ORCPT ); Mon, 29 Feb 2016 06:01:07 -0500 Received: from torg.zytor.com ([198.137.202.12]:52940 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752021AbcB2LBD (ORCPT ); Mon, 29 Feb 2016 06:01:03 -0500 Date: Mon, 29 Feb 2016 02:59:30 -0800 From: tip-bot for Josh Poimboeuf Message-ID: Cc: jslaby@suse.cz, akpm@linux-foundation.org, palves@redhat.com, acme@kernel.org, chris.j.arges@canonical.com, peterz@infradead.org, torvalds@linux-foundation.org, jpoimboe@redhat.com, mmarek@suse.cz, bp@alien8.de, linux-kernel@vger.kernel.org, hpa@zytor.com, bernd@petrovitsch.priv.at, luto@kernel.org, daniel@iogearbox.net, tglx@linutronix.de, namhyung@gmail.com, mingo@kernel.org, ast@kernel.org Reply-To: tglx@linutronix.de, namhyung@gmail.com, bernd@petrovitsch.priv.at, luto@kernel.org, daniel@iogearbox.net, mingo@kernel.org, ast@kernel.org, acme@kernel.org, chris.j.arges@canonical.com, jslaby@suse.cz, akpm@linux-foundation.org, palves@redhat.com, bp@alien8.de, linux-kernel@vger.kernel.org, hpa@zytor.com, peterz@infradead.org, torvalds@linux-foundation.org, jpoimboe@redhat.com, mmarek@suse.cz In-Reply-To: References: To: linux-tip-commits@vger.kernel.org Subject: [tip:core/objtool] bpf: Mark __bpf_prog_run() stack frame as non-standard Git-Commit-ID: 39853cc0cdcf1b11f00f7f81e2f515a4d68ed209 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 39853cc0cdcf1b11f00f7f81e2f515a4d68ed209 Gitweb: http://git.kernel.org/tip/39853cc0cdcf1b11f00f7f81e2f515a4d68ed209 Author: Josh Poimboeuf AuthorDate: Sun, 28 Feb 2016 22:22:37 -0600 Committer: Ingo Molnar 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 Acked-by: Daniel Borkmann Acked-by: Alexei Starovoitov Cc: Andrew Morton Cc: Andy Lutomirski Cc: Arnaldo Carvalho de Melo Cc: Bernd Petrovitsch Cc: Borislav Petkov Cc: Chris J Arges Cc: Jiri Slaby Cc: Linus Torvalds Cc: Michal Marek Cc: Namhyung Kim Cc: Pedro Alves Cc: Peter Zijlstra Cc: Thomas Gleixner 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 --- 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 #include #include +#include #include @@ -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)