• Josh Poimboeuf's avatar
    bpf: Mark __bpf_prog_run() stack frame as non-standard · 39853cc0
    Josh Poimboeuf authored
    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: default avatarJosh Poimboeuf <jpoimboe@redhat.com>
    Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Acked-by: default avatarAlexei 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.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    39853cc0
core.c 20.2 KB