diff options
Diffstat (limited to 'arch/x86/kernel/traps.c')
| -rw-r--r-- | arch/x86/kernel/traps.c | 87 | 
1 files changed, 0 insertions, 87 deletions
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index 4a817d20ce3b..c876f1d36a81 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -77,18 +77,6 @@  DECLARE_BITMAP(system_vectors, NR_VECTORS); -static inline void cond_local_irq_enable(struct pt_regs *regs) -{ -	if (regs->flags & X86_EFLAGS_IF) -		local_irq_enable(); -} - -static inline void cond_local_irq_disable(struct pt_regs *regs) -{ -	if (regs->flags & X86_EFLAGS_IF) -		local_irq_disable(); -} -  __always_inline int is_valid_bugaddr(unsigned long addr)  {  	if (addr < TASK_SIZE_MAX) @@ -213,81 +201,6 @@ DEFINE_IDTENTRY(exc_overflow)  	do_error_trap(regs, 0, "overflow", X86_TRAP_OF, SIGSEGV, 0, NULL);  } -#ifdef CONFIG_X86_KERNEL_IBT - -static __ro_after_init bool ibt_fatal = true; - -extern void ibt_selftest_ip(void); /* code label defined in asm below */ - -enum cp_error_code { -	CP_EC        = (1 << 15) - 1, - -	CP_RET       = 1, -	CP_IRET      = 2, -	CP_ENDBR     = 3, -	CP_RSTRORSSP = 4, -	CP_SETSSBSY  = 5, - -	CP_ENCL	     = 1 << 15, -}; - -DEFINE_IDTENTRY_ERRORCODE(exc_control_protection) -{ -	if (!cpu_feature_enabled(X86_FEATURE_IBT)) { -		pr_err("Unexpected #CP\n"); -		BUG(); -	} - -	if (WARN_ON_ONCE(user_mode(regs) || (error_code & CP_EC) != CP_ENDBR)) -		return; - -	if (unlikely(regs->ip == (unsigned long)&ibt_selftest_ip)) { -		regs->ax = 0; -		return; -	} - -	pr_err("Missing ENDBR: %pS\n", (void *)instruction_pointer(regs)); -	if (!ibt_fatal) { -		printk(KERN_DEFAULT CUT_HERE); -		__warn(__FILE__, __LINE__, (void *)regs->ip, TAINT_WARN, regs, NULL); -		return; -	} -	BUG(); -} - -/* Must be noinline to ensure uniqueness of ibt_selftest_ip. */ -noinline bool ibt_selftest(void) -{ -	unsigned long ret; - -	asm ("	lea ibt_selftest_ip(%%rip), %%rax\n\t" -	     ANNOTATE_RETPOLINE_SAFE -	     "	jmp *%%rax\n\t" -	     "ibt_selftest_ip:\n\t" -	     UNWIND_HINT_FUNC -	     ANNOTATE_NOENDBR -	     "	nop\n\t" - -	     : "=a" (ret) : : "memory"); - -	return !ret; -} - -static int __init ibt_setup(char *str) -{ -	if (!strcmp(str, "off")) -		setup_clear_cpu_cap(X86_FEATURE_IBT); - -	if (!strcmp(str, "warn")) -		ibt_fatal = false; - -	return 1; -} - -__setup("ibt=", ibt_setup); - -#endif /* CONFIG_X86_KERNEL_IBT */ -  #ifdef CONFIG_X86_F00F_BUG  void handle_invalid_op(struct pt_regs *regs)  #else  |