Merge tag 'stable/for-linus-3.12-rc0-tag-three' of git://git.kernel.org/pub/scm/linux...
[deliverable/linux.git] / drivers / lguest / interrupts_and_traps.c
index 28433a155d67da1599dd2b63c852737d7ab9c67f..70dfcdc29f1f9e9d8cfc764d69ab7a965daf5c25 100644 (file)
@@ -139,6 +139,16 @@ static void set_guest_interrupt(struct lg_cpu *cpu, u32 lo, u32 hi,
        cpu->regs->cs = (__KERNEL_CS|GUEST_PL);
        cpu->regs->eip = idt_address(lo, hi);
 
+       /*
+        * Trapping always clears these flags:
+        * TF: Trap flag
+        * VM: Virtual 8086 mode
+        * RF: Resume
+        * NT: Nested task.
+        */
+       cpu->regs->eflags &=
+               ~(X86_EFLAGS_TF|X86_EFLAGS_VM|X86_EFLAGS_RF|X86_EFLAGS_NT);
+
        /*
         * There are two kinds of interrupt handlers: 0xE is an "interrupt
         * gate" which expects interrupts to be disabled on entry.
This page took 0.02629 seconds and 5 git commands to generate.