// SPDX-License-Identifier: GPL-2.0 /* * Clang Control Flow Integrity (CFI) support. * * Copyright (C) 2022 Google LLC */ #include <linux/string.h> #include <linux/cfi.h> #include <asm/insn.h> #include <asm/insn-eval.h> /* * Returns the target address and the expected type when regs->ip points * to a compiler-generated CFI trap. */ static bool decode_cfi_insn(struct pt_regs *regs, unsigned long *target, u32 *type) { … } /* * Checks if a ud2 trap is because of a CFI failure, and handles the trap * if needed. Returns a bug_trap_type value similarly to report_bug. */ enum bug_trap_type handle_cfi_failure(struct pt_regs *regs) { … } /* * Ensure that __kcfi_typeid_ symbols are emitted for functions that may * not be indirectly called with all configurations. */ __ADDRESSABLE(__memcpy)