#include <linux/ptrace.h>
#include <asm/bugs.h>
#include <asm/traps.h>
enum cp_error_code { … };
static const char cp_err[][10] = …;
static const char *cp_err_string(unsigned long error_code)
{ … }
static void do_unexpected_cp(struct pt_regs *regs, unsigned long error_code)
{ … }
static DEFINE_RATELIMIT_STATE(cpf_rate, DEFAULT_RATELIMIT_INTERVAL,
DEFAULT_RATELIMIT_BURST);
static void do_user_cp_fault(struct pt_regs *regs, unsigned long error_code)
{ … }
static __ro_after_init bool ibt_fatal = …;
static void do_kernel_cp_fault(struct pt_regs *regs, unsigned long error_code)
{ … }
static int __init ibt_setup(char *str)
{ … }
__setup(…);
DEFINE_IDTENTRY_ERRORCODE(exc_control_protection)
{ … }