Commit 59330942 authored by Borislav Petkov's avatar Borislav Petkov
Browse files

x86/32: Remove CONFIG_DOUBLEFAULT



Make the doublefault exception handler unconditional on 32-bit. Yes,
it is important to be able to catch #DF exceptions instead of silent
reboots. Yes, the code size increase is worth every byte. And one less
CONFIG symbol is just the cherry on top.

No functional changes.

Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Acked-by: default avatarAndy Lutomirski <luto@kernel.org>
Link: https://lkml.kernel.org/r/20200404083646.8897-1-bp@alien8.de
parent 8f3d9f35
Loading
Loading
Loading
Loading
+0 −9
Original line number Diff line number Diff line
@@ -99,15 +99,6 @@ config DEBUG_WX

	  If in doubt, say "Y".

config DOUBLEFAULT
	default y
	bool "Enable doublefault exception handler" if EXPERT && X86_32
	---help---
	  This option allows trapping of rare doublefault exceptions that
	  would otherwise cause a system to silently reboot. Disabling this
	  option saves about 4k and might cause you much additional grey
	  hair.

config DEBUG_TLBFLUSH
	bool "Set upper limit of TLB entries to flush one-by-one"
	depends on DEBUG_KERNEL
+0 −2
Original line number Diff line number Diff line
@@ -1536,7 +1536,6 @@ SYM_CODE_START(debug)
	jmp	common_exception
SYM_CODE_END(debug)

#ifdef CONFIG_DOUBLEFAULT
SYM_CODE_START(double_fault)
1:
	/*
@@ -1576,7 +1575,6 @@ SYM_CODE_START(double_fault)
	hlt
	jmp 1b
SYM_CODE_END(double_fault)
#endif

/*
 * NMI is doubly nasty.  It can happen on the first instruction of
+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
#ifndef _ASM_X86_DOUBLEFAULT_H
#define _ASM_X86_DOUBLEFAULT_H

#if defined(CONFIG_X86_32) && defined(CONFIG_DOUBLEFAULT)
#ifdef CONFIG_X86_32
extern void doublefault_init_cpu_tss(void);
#else
static inline void doublefault_init_cpu_tss(void)
+0 −2
Original line number Diff line number Diff line
@@ -69,9 +69,7 @@ dotraplinkage void do_overflow(struct pt_regs *regs, long error_code);
dotraplinkage void do_bounds(struct pt_regs *regs, long error_code);
dotraplinkage void do_invalid_op(struct pt_regs *regs, long error_code);
dotraplinkage void do_device_not_available(struct pt_regs *regs, long error_code);
#if defined(CONFIG_X86_64) || defined(CONFIG_DOUBLEFAULT)
dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code, unsigned long cr2);
#endif
dotraplinkage void do_coprocessor_segment_overrun(struct pt_regs *regs, long error_code);
dotraplinkage void do_invalid_TSS(struct pt_regs *regs, long error_code);
dotraplinkage void do_segment_not_present(struct pt_regs *regs, long error_code);
+1 −3
Original line number Diff line number Diff line
@@ -102,9 +102,7 @@ obj-$(CONFIG_KEXEC_FILE) += kexec-bzimage64.o
obj-$(CONFIG_CRASH_DUMP)	+= crash_dump_$(BITS).o
obj-y				+= kprobes/
obj-$(CONFIG_MODULES)		+= module.o
ifeq ($(CONFIG_X86_32),y)
obj-$(CONFIG_DOUBLEFAULT)	+= doublefault_32.o
endif
obj-$(CONFIG_X86_32)		+= doublefault_32.o
obj-$(CONFIG_KGDB)		+= kgdb.o
obj-$(CONFIG_VM86)		+= vm86_32.o
obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o
Loading