objtool: Introduce HINT_RET_OFFSET
authorPeter Zijlstra <peterz@infradead.org>
Wed, 1 Apr 2020 14:38:19 +0000 (16:38 +0200)
committerIngo Molnar <mingo@kernel.org>
Wed, 22 Apr 2020 08:53:50 +0000 (10:53 +0200)
commite25eea89bb8853763a22fa2547199cf96b571ba1
treef766e439a5bb171c5c71a56943a684f0e6716723
parentb746046238bb99b8f703c79f6d95357428fb6476
objtool: Introduce HINT_RET_OFFSET

Normally objtool ensures a function keeps the stack layout invariant.
But there is a useful exception, it is possible to stuff the return
stack in order to 'inject' a 'call':

push $fun
ret

In this case the invariant mentioned above is violated.

Add an objtool HINT to annotate this and allow a function exit with a
modified stack frame.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>
Acked-by: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lkml.kernel.org/r/20200416115118.690601403@infradead.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/orc_types.h
arch/x86/include/asm/unwind_hints.h
tools/arch/x86/include/asm/orc_types.h
tools/objtool/check.c
tools/objtool/check.h