Messages in this thread | | | From | Josh Poimboeuf <> | Subject | [PATCH v2 00/11] static_call: Improve NULL/ret0 handling | Date | Tue, 21 Mar 2023 21:00:06 -0700 |
| |
Peter pointed out that v1 had CFI violations on arm64 with CONFIG_CFI_CLANG. Then I realized there are already CFI violations today in the existing code.
So this ended up turning into a complete rewrite of v1.
Highlights include:
- Several cleanups - Fix arm64 CFI violations - Make NULL pointer behavior consistent across configs - Merge NULL and RET0 into a single concept
v1 can be found here:
https://lkml.kernel.org/lkml/cover.1678474914.git.jpoimboe@kernel.org
Josh Poimboeuf (11): static_call: Improve key type abstraction static_call: Flip key type union bit static_call: Remove static_call_mod_init() declaration static_call: Remove static_call.h dependency on cpu.h static_call: Make ARCH_ADD_TRAMP_KEY() generic static_call: "EXPORT_STATIC_CALL_TRAMP" -> "EXPORT_STATIC_CALL_RO" static_call: Reorganize static call headers arm64/static_call: Fix static call CFI violations static_call: Make NULL static calls consistent static_call: Remove static_call_cond() static_call: Remove DEFINE_STATIC_CALL_RET0()
arch/Kconfig | 4 + arch/arm/include/asm/paravirt.h | 2 +- arch/arm64/include/asm/paravirt.h | 2 +- arch/arm64/include/asm/static_call.h | 29 ++ arch/powerpc/include/asm/static_call.h | 1 - arch/powerpc/kernel/irq.c | 2 +- arch/powerpc/kernel/static_call.c | 6 +- arch/x86/events/amd/brs.c | 2 +- arch/x86/events/amd/core.c | 2 +- arch/x86/events/core.c | 29 +- arch/x86/include/asm/kvm-x86-ops.h | 6 +- arch/x86/include/asm/kvm-x86-pmu-ops.h | 3 +- arch/x86/include/asm/kvm_host.h | 4 +- arch/x86/include/asm/paravirt.h | 2 +- arch/x86/include/asm/perf_event.h | 2 +- arch/x86/include/asm/preempt.h | 6 +- arch/x86/include/asm/static_call.h | 22 +- arch/x86/kernel/alternative.c | 6 - arch/x86/kernel/paravirt.c | 1 + arch/x86/kernel/static_call.c | 89 +----- arch/x86/kvm/irq.c | 2 +- arch/x86/kvm/lapic.c | 22 +- arch/x86/kvm/pmu.c | 4 +- arch/x86/kvm/x86.c | 28 +- block/bio.c | 1 + include/linux/entry-common.h | 2 +- include/linux/entry-kvm.h | 2 +- include/linux/kernel.h | 4 +- include/linux/module.h | 2 +- include/linux/sched.h | 2 +- include/linux/static_call.h | 369 ++++++++++------------ include/linux/static_call_types.h | 74 +---- kernel/Makefile | 2 +- kernel/cgroup/cgroup.c | 1 + kernel/events/core.c | 15 +- kernel/sched/core.c | 18 +- kernel/static_call.c | 13 + kernel/static_call_inline.c | 64 +++- security/keys/trusted-keys/trusted_core.c | 2 +- sound/soc/intel/avs/trace.c | 1 + tools/include/linux/static_call_types.h | 74 +---- 41 files changed, 369 insertions(+), 553 deletions(-) create mode 100644 arch/arm64/include/asm/static_call.h
-- 2.39.2
| |