diff options
author | Peter Zijlstra <peterz@infradead.org> | 2023-12-15 10:12:20 +0100 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2023-12-15 16:25:55 -0800 |
commit | 2cd3e3772e41377f32d6eea643e0590774e9187c (patch) | |
tree | 6731bd8786a091dbf2e2447952df2b5d908efec6 /arch/x86/include | |
parent | e72d88d18df4e03c80e64c2535f70c64f1dc6fc1 (diff) | |
download | linux-stable-2cd3e3772e41377f32d6eea643e0590774e9187c.tar.gz linux-stable-2cd3e3772e41377f32d6eea643e0590774e9187c.tar.bz2 linux-stable-2cd3e3772e41377f32d6eea643e0590774e9187c.zip |
x86/cfi,bpf: Fix bpf_struct_ops CFI
BPF struct_ops uses __arch_prepare_bpf_trampoline() to write
trampolines for indirect function calls. These tramplines much have
matching CFI.
In order to obtain the correct CFI hash for the various methods, add a
matching structure that contains stub functions, the compiler will
generate correct CFI which we can pilfer for the trampolines.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20231215092707.566977112@infradead.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'arch/x86/include')
-rw-r--r-- | arch/x86/include/asm/cfi.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/include/asm/cfi.h b/arch/x86/include/asm/cfi.h index 8779abd217b7..1a50b2cd4713 100644 --- a/arch/x86/include/asm/cfi.h +++ b/arch/x86/include/asm/cfi.h @@ -123,6 +123,8 @@ static inline int cfi_get_offset(void) } #define cfi_get_offset cfi_get_offset +extern u32 cfi_get_func_hash(void *func); + #else static inline enum bug_trap_type handle_cfi_failure(struct pt_regs *regs) { @@ -130,6 +132,10 @@ static inline enum bug_trap_type handle_cfi_failure(struct pt_regs *regs) } #define cfi_bpf_hash 0U #define cfi_bpf_subprog_hash 0U +static inline u32 cfi_get_func_hash(void *func) +{ + return 0; +} #endif /* CONFIG_CFI_CLANG */ #endif /* _ASM_X86_CFI_H */ |