[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210908130922.118265849@linutronix.de>
Date: Wed, 8 Sep 2021 15:29:10 +0200 (CEST)
From: Thomas Gleixner <tglx@...utronix.de>
To: LKML <linux-kernel@...r.kernel.org>
Cc: x86@...nel.org, Al Viro <viro@...iv.linux.org.uk>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Tony Luck <tony.luck@...el.com>,
Alexei Starovoitov <ast@...nel.org>,
Peter Ziljstra <peterz@...radead.org>,
Song Liu <songliubraving@...com>,
Daniel Borkmann <daniel@...earbox.net>
Subject: [patch V3 00/20] x86/fpu: Clean up exception fixups and error
handling in sigframe related code
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(-)
Powered by blists - more mailing lists