diff options
author | Jeremy Fitzhardinge <jeremy@goop.org> | 2008-03-17 23:37:12 (GMT) |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-24 21:57:31 (GMT) |
commit | 90e9f53662826db3cdd6d99bd394d727b05160c1 (patch) | |
tree | 5310e489d7fd62185706424a98df354e83e9a1a3 | |
parent | 9666e9d44b83755c53615fb89c0787b6846786a1 (diff) | |
download | linux-90e9f53662826db3cdd6d99bd394d727b05160c1.tar.xz |
xen: make sure iret faults are trapped
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | arch/x86/kernel/entry_32.S | 2 | ||||
-rw-r--r-- | arch/x86/xen/xen-asm.S | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index f0f8934..568c6cc 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S @@ -409,7 +409,7 @@ restore_nocheck_notrace: irq_return: INTERRUPT_RETURN .section .fixup,"ax" -iret_exc: +ENTRY(iret_exc) pushl $0 # no error code pushl $do_iret_error jmp error_code diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S index fe161ed..99223cc 100644 --- a/arch/x86/xen/xen-asm.S +++ b/arch/x86/xen/xen-asm.S @@ -184,8 +184,12 @@ iret_restore_end: region is OK. */ je xen_hypervisor_callback - iret +1: iret xen_iret_end_crit: +.section __ex_table,"a" + .align 4 + .long 1b,iret_exc +.previous hyper_iret: /* put this out of line since its very rarely used */ |