Messages in this thread | | | From | Alexandre Chartre <> | Subject | [PATCH V2 0/9] objtool changes to remove all ANNOTATE_NOSPEC_ALTERNATIVE | Date | Tue, 7 Apr 2020 09:31:33 +0200 |
| |
Hi,
This is version v2 of this patchset based on the different comments received so far. It now uses and includes PeterZ patch to add UNWIND_HINT_RET_OFFSET. Other changes are described below.
Code like retpoline or RSB stuffing, which is used to mitigate some of the speculative execution issues, is currently ignored by objtool with the ANNOTATE_NOSPEC_ALTERNATIVE directive. This series adds support for intra-function calls to objtool so that it can handle such a code. With these changes, we can remove all ANNOTATE_NOSPEC_ALTERNATIVE directives.
Changes: - replace RETPOLINE_RET with PeterZ UNWIND_HINT_RET_OFFSET - make objtool intra-function call action architecture dependent - objtool now automatically detects and validates all intra-function calls but it issues a warning if the call was not explicitly tagged - change __FILL_RETURN_BUFFER to work with objtool - add generic ANNOTATE_INTRA_FUNCTION_CALL macro - remove all ANNOTATE_SPEC_ALTERNATIVE (even for __FILL_RETURN_BUFFER)
Thanks,
alex.
-----
Alexandre Chartre (8): objtool: UNWIND_HINT_RET_OFFSET should not check registers objtool: is_fentry_call() crashes if call has no destination objtool: Allow branches within the same alternative. objtool: Add support for intra-function calls x86/speculation: Change __FILL_RETURN_BUFFER to work with objtool x86/speculation: Annotate intra-function calls x86/speculation: Add unwind hint to trampoline return x86/speculation: Remove all ANNOTATE_NOSPEC_ALTERNATIVE directives
Peter Zijlstra (Intel) (1): objtool: Introduce HINT_RET_OFFSET
arch/x86/include/asm/nospec-branch.h | 32 ++-- arch/x86/include/asm/orc_types.h | 1 + arch/x86/include/asm/unwind_hints.h | 10 ++ include/linux/frame.h | 11 ++ tools/arch/x86/include/asm/orc_types.h | 1 + .../Documentation/stack-validation.txt | 8 + tools/objtool/arch.h | 2 + tools/objtool/arch/x86/decode.c | 12 ++ tools/objtool/check.c | 152 ++++++++++++++---- tools/objtool/check.h | 6 +- 10 files changed, 192 insertions(+), 43 deletions(-)
-- 2.18.2
| |