x86-64: Rework vsyscall emulation and add vsyscall= parameter
[deliverable/linux.git] / arch / x86 / mm / fault.c
index c1d018238f3257515b23d82969970acbc34aa184..e58935c25b9411211dc82f00ecd51393420b62a2 100644 (file)
@@ -720,6 +720,18 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
                if (is_errata100(regs, address))
                        return;
 
+#ifdef CONFIG_X86_64
+               /*
+                * Instruction fetch faults in the vsyscall page might need
+                * emulation.
+                */
+               if (unlikely((error_code & PF_INSTR) &&
+                            ((address & ~0xfff) == VSYSCALL_START))) {
+                       if (emulate_vsyscall(regs, address))
+                               return;
+               }
+#endif
+
                if (unlikely(show_unhandled_signals))
                        show_signal_msg(regs, error_code, address, tsk);
 
This page took 0.026195 seconds and 5 git commands to generate.