x86/doublefault/32: Rename doublefault.c to doublefault_32.c
authorAndy Lutomirski <luto@kernel.org>
Thu, 21 Nov 2019 17:42:30 +0000 (09:42 -0800)
committerIngo Molnar <mingo@kernel.org>
Tue, 26 Nov 2019 20:53:34 +0000 (21:53 +0100)
doublefault.c now only contains 32-bit code.  Rename it to
doublefault_32.c.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/Makefile
arch/x86/kernel/doublefault.c [deleted file]
arch/x86/kernel/doublefault_32.c [new file with mode: 0644]

index 32acb970f416e2be1dbb716930ee1de1b1fd0317..6175e370ee4ab56d5d2d1437d5cb1712fdd8ba49 100644 (file)
@@ -100,7 +100,9 @@ obj-$(CONFIG_KEXEC_FILE)    += kexec-bzimage64.o
 obj-$(CONFIG_CRASH_DUMP)       += crash_dump_$(BITS).o
 obj-y                          += kprobes/
 obj-$(CONFIG_MODULES)          += module.o
-obj-$(CONFIG_DOUBLEFAULT)      += doublefault.o
+ifeq ($(CONFIG_X86_32),y)
+obj-$(CONFIG_DOUBLEFAULT)      += doublefault_32.o
+endif
 obj-$(CONFIG_KGDB)             += kgdb.o
 obj-$(CONFIG_VM86)             += vm86_32.o
 obj-$(CONFIG_EARLY_PRINTK)     += early_printk.o
diff --git a/arch/x86/kernel/doublefault.c b/arch/x86/kernel/doublefault.c
deleted file mode 100644 (file)
index 0b3c616..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-#include <linux/mm.h>
-#include <linux/sched.h>
-#include <linux/sched/debug.h>
-#include <linux/init_task.h>
-#include <linux/fs.h>
-
-#include <linux/uaccess.h>
-#include <asm/pgtable.h>
-#include <asm/processor.h>
-#include <asm/desc.h>
-
-#ifdef CONFIG_X86_32
-
-#define DOUBLEFAULT_STACKSIZE (1024)
-static unsigned long doublefault_stack[DOUBLEFAULT_STACKSIZE];
-#define STACK_START (unsigned long)(doublefault_stack+DOUBLEFAULT_STACKSIZE)
-
-#define ptr_ok(x) ((x) > PAGE_OFFSET && (x) < PAGE_OFFSET + MAXMEM)
-
-static void doublefault_fn(void)
-{
-       struct desc_ptr gdt_desc = {0, 0};
-       unsigned long gdt, tss;
-
-       native_store_gdt(&gdt_desc);
-       gdt = gdt_desc.address;
-
-       printk(KERN_EMERG "PANIC: double fault, gdt at %08lx [%d bytes]\n", gdt, gdt_desc.size);
-
-       if (ptr_ok(gdt)) {
-               gdt += GDT_ENTRY_TSS << 3;
-               tss = get_desc_base((struct desc_struct *)gdt);
-               printk(KERN_EMERG "double fault, tss at %08lx\n", tss);
-
-               if (ptr_ok(tss)) {
-                       struct x86_hw_tss *t = (struct x86_hw_tss *)tss;
-
-                       printk(KERN_EMERG "eip = %08lx, esp = %08lx\n",
-                              t->ip, t->sp);
-
-                       printk(KERN_EMERG "eax = %08lx, ebx = %08lx, ecx = %08lx, edx = %08lx\n",
-                               t->ax, t->bx, t->cx, t->dx);
-                       printk(KERN_EMERG "esi = %08lx, edi = %08lx\n",
-                               t->si, t->di);
-               }
-       }
-
-       for (;;)
-               cpu_relax();
-}
-
-struct x86_hw_tss doublefault_tss __cacheline_aligned = {
-       .sp0            = STACK_START,
-       .ss0            = __KERNEL_DS,
-       .ldt            = 0,
-       .io_bitmap_base = IO_BITMAP_OFFSET_INVALID,
-
-       .ip             = (unsigned long) doublefault_fn,
-       /* 0x2 bit is always set */
-       .flags          = X86_EFLAGS_SF | 0x2,
-       .sp             = STACK_START,
-       .es             = __USER_DS,
-       .cs             = __KERNEL_CS,
-       .ss             = __KERNEL_DS,
-       .ds             = __USER_DS,
-       .fs             = __KERNEL_PERCPU,
-#ifndef CONFIG_X86_32_LAZY_GS
-       .gs             = __KERNEL_STACK_CANARY,
-#endif
-
-       .__cr3          = __pa_nodebug(swapper_pg_dir),
-};
-
-#endif
diff --git a/arch/x86/kernel/doublefault_32.c b/arch/x86/kernel/doublefault_32.c
new file mode 100644 (file)
index 0000000..61c707c
--- /dev/null
@@ -0,0 +1,71 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <linux/mm.h>
+#include <linux/sched.h>
+#include <linux/sched/debug.h>
+#include <linux/init_task.h>
+#include <linux/fs.h>
+
+#include <linux/uaccess.h>
+#include <asm/pgtable.h>
+#include <asm/processor.h>
+#include <asm/desc.h>
+
+#define DOUBLEFAULT_STACKSIZE (1024)
+static unsigned long doublefault_stack[DOUBLEFAULT_STACKSIZE];
+#define STACK_START (unsigned long)(doublefault_stack+DOUBLEFAULT_STACKSIZE)
+
+#define ptr_ok(x) ((x) > PAGE_OFFSET && (x) < PAGE_OFFSET + MAXMEM)
+
+static void doublefault_fn(void)
+{
+       struct desc_ptr gdt_desc = {0, 0};
+       unsigned long gdt, tss;
+
+       native_store_gdt(&gdt_desc);
+       gdt = gdt_desc.address;
+
+       printk(KERN_EMERG "PANIC: double fault, gdt at %08lx [%d bytes]\n", gdt, gdt_desc.size);
+
+       if (ptr_ok(gdt)) {
+               gdt += GDT_ENTRY_TSS << 3;
+               tss = get_desc_base((struct desc_struct *)gdt);
+               printk(KERN_EMERG "double fault, tss at %08lx\n", tss);
+
+               if (ptr_ok(tss)) {
+                       struct x86_hw_tss *t = (struct x86_hw_tss *)tss;
+
+                       printk(KERN_EMERG "eip = %08lx, esp = %08lx\n",
+                              t->ip, t->sp);
+
+                       printk(KERN_EMERG "eax = %08lx, ebx = %08lx, ecx = %08lx, edx = %08lx\n",
+                               t->ax, t->bx, t->cx, t->dx);
+                       printk(KERN_EMERG "esi = %08lx, edi = %08lx\n",
+                               t->si, t->di);
+               }
+       }
+
+       for (;;)
+               cpu_relax();
+}
+
+struct x86_hw_tss doublefault_tss __cacheline_aligned = {
+       .sp0            = STACK_START,
+       .ss0            = __KERNEL_DS,
+       .ldt            = 0,
+       .io_bitmap_base = IO_BITMAP_OFFSET_INVALID,
+
+       .ip             = (unsigned long) doublefault_fn,
+       /* 0x2 bit is always set */
+       .flags          = X86_EFLAGS_SF | 0x2,
+       .sp             = STACK_START,
+       .es             = __USER_DS,
+       .cs             = __KERNEL_CS,
+       .ss             = __KERNEL_DS,
+       .ds             = __USER_DS,
+       .fs             = __KERNEL_PERCPU,
+#ifndef CONFIG_X86_32_LAZY_GS
+       .gs             = __KERNEL_STACK_CANARY,
+#endif
+
+       .__cr3          = __pa_nodebug(swapper_pg_dir),
+};