lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 13 Oct 2021 14:22:17 +0200 From: Peter Zijlstra <peterz@...radead.org> To: x86@...nel.org, jpoimboe@...hat.com, andrew.cooper3@...rix.com Cc: linux-kernel@...r.kernel.org, peterz@...radead.org, alexei.starovoitov@...il.com, ndesaulniers@...gle.com Subject: [PATCH 0/9] x86: Rewrite the retpoline rewrite logic Hi, These patches rewrite the way retpolines are rewritten. Currently objtool emits alternative entries for most retpoline calls. However trying to extend that led to trouble (ELF files are horrid). Therefore completely overhaul this and have objtool emit a .retpoline_sites section that lists all compiler generated retpoline thunk calls. Then the kernel can do with them as it pleases. Notably it will: - rewrite them to indirect instructions for !RETPOLINE - rewrite them to lfence; indirect; for RETPOLINE_AMD, where size allows (boo clang!) Specifically, the !RETPOLINE case can now also deal with the clang-special conditional-indirect-tail-call: Jcc __x86_indirect_thunk_\reg. Finally, also update the x86 BPF jit to catch up to recent times and do these same things. All this should help improve performance by removing an indirection. The series has been booted in kvm using 'debug-alternative spectre_v2=off' and 'debug-alternative spectre_v2=retpoline,amd' on a x86_64 defconfig+kvm_guest.config build. IOW, early days. --- arch/x86/include/asm/GEN-for-each-reg.h | 10 +- arch/x86/include/asm/alternative.h | 1 + arch/x86/kernel/alternative.c | 186 +++++++++++++++++++++++++++++++- arch/x86/kernel/cpu/bugs.c | 7 -- arch/x86/kernel/module.c | 9 +- arch/x86/kernel/vmlinux.lds.S | 12 +++ arch/x86/lib/retpoline.S | 42 -------- arch/x86/net/bpf_jit_comp.c | 18 ++-- tools/objtool/arch/x86/decode.c | 126 +++++----------------- tools/objtool/elf.c | 84 --------------- tools/objtool/include/objtool/elf.h | 1 - 11 files changed, 246 insertions(+), 250 deletions(-)
Powered by blists - more mailing lists