Messages in this thread | | | From | Thomas Gleixner <> | Subject | [patch V3 00/20] x86/fpu: Clean up exception fixups and error handling in sigframe related code | Date | Wed, 8 Sep 2021 15:29:10 +0200 (CEST) |
| |
A recent discussion [1] about hardware poisoning unearthed some short comings in the error handling of the sigframe related FPU code:
- The error exit for exceptions other than #PF is obfuscated
- The error code return values of the various functions are pointless because all callers just care about success or failure and the error codes are never propagated to user space.
- Some of the buffer clearing happens needlessly inside of page fault disabled regions.
- The MCE aware exception fixup is inconsistent and confusing especially in copy_mc_64.c. It uses a fixup function which stores the trap number in regs->ax just to overwrite regs->ax at the callsite specific fixup.
The following series cleans this up. The resulting excecutable code is slightly smaller with that.
It's also available in git:
git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git x86/fpu
Changes vs. V2 [2]:
- Fix the bogus left over check for #PF which causes boot failures
Thanks,
tglx
[1] https://lore.kernel.org/r/87r1edgs2w.ffs@tglx [2] https://lore.kernel.org/20210907200722.067068005@linutronix.de
--- arch/x86/ia32/ia32_signal.c | 14 +- arch/x86/include/asm/asm.h | 49 ++++----- arch/x86/include/asm/extable.h | 44 +++++--- arch/x86/include/asm/extable_fixup_types.h | 22 ++++ arch/x86/include/asm/fpu/internal.h | 84 ++++++++++------ arch/x86/include/asm/msr.h | 4 arch/x86/include/asm/segment.h | 2 arch/x86/kernel/cpu/mce/core.c | 40 ++------ arch/x86/kernel/cpu/mce/internal.h | 14 -- arch/x86/kernel/cpu/mce/severity.c | 22 ++-- arch/x86/kernel/fpu/signal.c | 144 ++++++++++++++--------------- arch/x86/kernel/signal.c | 18 +-- arch/x86/lib/copy_mc_64.S | 8 - arch/x86/mm/extable.c | 131 ++++++++++---------------- arch/x86/net/bpf_jit_comp.c | 11 -- scripts/sorttable.c | 4 16 files changed, 301 insertions(+), 310 deletions(-)
| |