On 01/21/2016 11:49 PM, Josh Poimboeuf wrote:
stacktool reports the following false positive warnings:

   stacktool: kernel/bpf/core.o: __bpf_prog_run()+0x5c: sibling call from 
callable instruction with changed frame pointer
   stacktool: kernel/bpf/core.o: __bpf_prog_run()+0x60: function has 
unreachable instruction
   stacktool: kernel/bpf/core.o: __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 stacktool 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 <jpoim...@redhat.com>
Cc: Alexei Starovoitov <a...@kernel.org>
Cc: net...@vger.kernel.org

Fine by me:

Acked-by: Daniel Borkmann <dan...@iogearbox.net>

Reply via email to