| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef _ASM_RISCV_CFI_H |
| #define _ASM_RISCV_CFI_H |
| |
| /* |
| * Clang Control Flow Integrity (CFI) support. |
| * |
| * Copyright (C) 2023 Google LLC |
| */ |
| #include <linux/bug.h> |
| |
| struct pt_regs; |
| |
| #ifdef CONFIG_CFI_CLANG |
| enum bug_trap_type handle_cfi_failure(struct pt_regs *regs); |
| #define __bpfcall |
| static inline int cfi_get_offset(void) |
| { |
| return 4; |
| } |
| |
| #define cfi_get_offset cfi_get_offset |
| extern u32 cfi_bpf_hash; |
| extern u32 cfi_bpf_subprog_hash; |
| extern u32 cfi_get_func_hash(void *func); |
| #else |
| static inline enum bug_trap_type handle_cfi_failure(struct pt_regs *regs) |
| { |
| return BUG_TRAP_TYPE_NONE; |
| } |
| |
| #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_RISCV_CFI_H */ |